Promise.myAll = function(list){
const results = []
let count = 0;
return new Promise((resolve, reject)=>{
list.map((item, index)=>{
item.then(res=>{
results[index] = res
count +=1;
if(count >= list.length) {resolve(results)}
},reason => reject(reason))
})
})
}
const p1 = new Promise((resolve, reject)=>{
resolve(1)
})
const p2 = new Promise((resolve, reject)=>{
resolve(2)
})
new Promise.all([p1,p2]).then(res=>{
console.log('res',res);
})
函数封装版
let p1 = new Promise((resolve, reject)=>{
setTimeout(() => {
resolve(11111)
}, 3000);
})
let p2 = new Promise((resolve, reject)=>{
setTimeout(() => {
resolve(22222)
}, 2000);
})
function myPromiseAll(promiseArr){
return new Promise((resolve, reject)=>{
let resArr = [promiseArr.length]
let num = 0
promiseArr.forEach((item,idx)=>{
item.then(res=>{
resArr[idx] = res
num++
if(num === promiseArr.length){
resolve(resArr)
}
})
})
})
}
myPromiseAll([p1,p2]).then(res=>{
console.log('res',res);
})