Promise.__proto__.myAll = function(promises) {
let results = []
let n = promises.length
return new Promise((resolve,reject)=>{
for(let i=0;i<n;i++) {
promises[i].then(res=>{
results[i] = res
if(i==n-1) {
resolve(results)
}
},err=>{
reject(err)
})
}
})
}
测试:
let promise1 = Promise.resolve(1);
let promise2 = Promise.resolve(2);
let promise3 = Promise.resolve(3);
Promise.myAll([promise1, promise2, promise3])
.then(results => {
console.log(results); // [1, 2, 3]
})
.catch(reason => {
console.log(reason,"err");
});