function PromiseAll (arr) {
//PromiseAll的返回值为一个promise对象
return new Promise((resolve, reject) => {
//PromiseAll的入参必须是函数
if (!Array.isArray(arr)) {
return reject(new TypeError('arr must be an array.'));
}
let resArr = [];
for (let i in arr) {
(function(i) {
Promise.resolve(arr[i]).then(res => {
resArr.push(res);
//只有所有的都成功了,才会返回resolve
if (i == arr.length - 1) {
return resolve(resArr);
}
}, err => {
return reject(err)
}).catch(err => {
console.log(err)
})
})(i)
}
})
}
笔记:利用promise手动实现promiseAll
最新推荐文章于 2024-01-29 16:19:35 发布