Promise.all = function(promises) {
return new Promise(function(resolve, reject) {
let resolvedCounter = 0;//计数器
let promiseNum = promises.length;//promise的个数
let resolvedValues = new Array(promiseNum);//promise返回值的数组
for (let i = 0; i < promiseNum; i++) {
(function(i) {
Promise.resolve(promises[i]).then(function(value) {
resolvedCounter++;
resolvedValues[i] = value;//确保按照promise对象的数组顺序输出结果对象
if (resolvedCounter == promiseNum) {
return resolve(resolvedValues);
}
}, function(reason) {
return reject(reason);
})
})(i)
}
})
}
Promise.all的手动实现
最新推荐文章于 2024-01-29 16:19:35 发布