首页 javascript 对于Promise的简单理解 ?

对于Promise的简单理解 ?

Promise 的用途

首先要了解Promise是什么,有什么用,为啥要用它?

是什么?

当谈到Promise的时候,你肯定顺便听到回调、异步、这样的玩意。其实说得通俗一点,Promise就是一种写代码的方式,并且是用来写JavaScript编程中的异步代码的。

基本用法

一句话:

return new Promise((resolve,reject)=>{})

那么Promise有什么用,为啥要用呢?

先从简单的回调说起

get((data) => {
})

就像这样子,就是处理异步任务的回调函数。

如果多起来了,那就是:

get1(data1 => {
    get2(data1, data2 => {
       get3(data2, data3 => {
          get4(data3, data4 => { 
             get5(data4, data5 => { 
             }) 
          }) 
       }) 
    }) 
})


我们不得不提到回调地狱了:)

回调地狱

就如上面的代码,如果想要更改执行顺序,很麻烦,读代码的时候跳来跳去,让人头大。(这种还算少了)

如果用Promise来写的话:

// 先把get都转成返回Promise对象的函数
// 然后

get1()
.then(get2)
.then(get3)
.then(get4)
.then(get5)
.then(data => {
})

舒服了

由此也可以引出 .then 的用法

then()方法返回一个Promise。它最多需要有两个参数:Promise 的成功和失败情况的回调函数。

语法:

p.then(onFulfilled[, onRejected]);

p.then(value => {
  // fulfillment
}, reason => {
  // rejection
});

如何使用 Promise.all

Promise.all(iterable)方法返回一个Promise实例,此实例在 iterable 参数内所有的promise 都“完成(resolved)”或参数中不包含promise时回调完成(resolve);如果参数中 promise有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败promise的结果。

语法:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});

如何使用 Promise.race

Promise.race(iterable)方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。

语法:

const promise1 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then(function(value) {
  console.log(value);

 

--点击为您加载更多--

关于作者: 共享博客

最新文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注