1、Promise.resolve(value)
promise.resolve(value)返回的是一个新的promise对象,而这个对象是由函数形参决定的。
如果value只是一个字符串,则直接返回一个成功的promise对象;如果value是一个promise对象,则返回的promise对象的状态由value的状态决定。
Promise.resolve = function (value) {
return new Promise((resolve, reject) => {
//如果形参value是一个promise对象
if (value instanceof Promise) {
value.then(
(v) => { resolve(v); },
(r) => { reject(r); });
}
//否则
else{
resolve(value);
}
})
}
2、Promise.reject(reason)
无论传入的参数是什么类型 返回的promise对象一定是失败的。
Promise.reject = function(reason){
return new Promise((resolve,reject)=>{
reject(reason);
})
}
3、Promise.race(promises)
promises数组中最先改变状态的promise对象决定了返回的promise对象的状态。
Promise.race = function(promises){
return new Promise((resolve,reject)=>{
for(let i=0;i<promises.length;i++)
{
promises[i].then(v=>{
//将返回的对象状态修改为 成功
resolve(v);
},
r=>{
reject(r);
})
}
})
}
4、Promise.all(promises)
只有这个数组中的所有对象均为成功的,最终返回的promise对象状态则为成功的。否则返回失败的promise对象。
Promise.all = function(promises){
return new Promise((resolve,reject)=>{
let arr = [];
let count = 0;
for(let i=0;i<promises.length;i++){
promises[i].then(
v=>{
count++;
arr[i] = v;
if(count === promises.length){
resolve(arr);
}
},
r=>{
reject(r);
})
}
})
}