手写promise.all方法
function PromiseAll(proList) {
return new Promise((res, rej) => {
if (!Array.isArray(proList)) {
return rej('参数类型有误!')
}
let proLength = proList.length
let resArr = []
let count = 0
for (let i = 0; i < proLength; i++) {
Promise.resolve(proList[i]).then(value => {
count++
resArr[i] = value
if (count == proLength) {
res(resArr)
}
}).catch(e => rej(e))
}
})
}
const pro1 = new Promise((res, rej) => {
setTimeout(() => {
res('1')
}, 1000);
})
const pro2 = new Promise((res, rej) => {
setTimeout(() => {
res('2')
}, 2000)
})
const pro3 = new Promise((res, rej) => {
setTimeout(() => {
res('3')
}, 3000)
})
const proAll = PromiseAll([pro1, pro2, pro3])
proAll.then(res => {
console.log('res =', res);
}).catch(e => {
console.log('e =', e);
})