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 的结果。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。