Promise 函数的方法

  1. Promise.resolve
  2. Promise.reject
  3. Promise.all
  4. Promise.race

Promise.resolve&reject&all&race

Promise.resolve

此函数返回 proimise 对象,参数分两种情况

  • 参数是 Promise 对象实例时,返回的这个 promise 实例
    let promise = new Promise((resolve, reject) => {
      // resolve("OK");
      reject("NOOOO")
    });
    let p1 = Promise.resolve(promise);
    p1.then(value => {
      console.log(value);
    }).catch(reason => {
      console.log(reason);
    })
  • resolve 参数是非 promise 对象实例,返回的 promise 实例一律变为 resolve(fulfilled) 状态
    let p2 = Promise.resolve(new Error("错错了。。。"))
    p2.then(value => {
      console.log('value:' + value);
    }).catch(reason => {
      console.log("reason:", reason);
    })
    输出:
    value: Error: 错错了。。。
    Promise {<fulfilled>: undefined}

Promise.reject

传入任何值,得到的都是 rejected 实例对象

let p1 = Promise.reject(123);
console.dir(p1);  //Promise { <rejected> 123 }
p1.catch(reason => {
    console.log(reason);
});

let p2 = Promise.reject(new Promise(resolve => {
    resolve(123)
}))
console.dir(p2);  //Promise { <rejected> Promise { 123 } }

Promise.all

当其接收的数组中全部 all 的 promise 状态 state 为 fulfilled 时,其状态才是 fulfilled,否则就是 rejected。
fulfilled 时,promise 的 result 值为这些数组元素 fulfilled 得到的值组成的数组:

Promise.race

谁是第一个?
race 同 all 一样,接收 promise 实例对象组成的数组,但是返回的 promise 只有第一个执行完的 promise 的结果。
第一个执行完的 promise 执行的不管是 resolve 或者 reject,都是 race 的结果。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间