在前面几篇文章中,我们封装了 Promise 构造函数、原型对象方法 then 以及 catch ,相信大家是有所收获的,接下来的篇章我们去探寻一下 Promise 构造函数的静态方法:resolve、reject、all以及race方法。
让我们先从 Promise.resolve方法 开始,Let’s go。
Promise.resolve 方法接受一个参数,可以是 promise 对象,也可以是非 promise 对象的任意值。用法如下:
let p1 = Promise.resolve();
let p2 = Promise.resolve("111");
let p3 = Promise.resolve(new Promise((resolve, reject) => {resolve("OK");
}))
let p4 = Promise.resolve(new Promise((resolve, reject) => {reject("NO");
}))
console.log(p1);
console.log(p2);
console.log(p3);
console.log(p4);
Promise.resolve 方法功能分析:
Promise.resolve()
返回一个 promise 对象;Promise.resolve()
中无参数时,返回一个状态为成功 [[PromiseState]]: fulfilled
,结果为[[PromiseResult]]: undefined
的 promise 对象。Promise.resolve 代码封装的实现:
Promise.resolve = function (data) {// 返回一个 promise 对象return new Promise((resolve, reject) => {// 判断参数是否是一个 promise 对象if (data instanceof Promise) {// 参数为 promise对象,则调用 then 方法data.then(value => {resolve(value);}, reason => {reject(reason)})} else {// 非 promise 对象的任意值,则直接返回成功的状态以及结果resolve(data);}})
}
下一章节探讨一下和 Promise.resolve 相对应的 api:Promise.reject 方法的使用以及封装。