自定义实现promise.all
Promise.all是一个在JavaScript中常见的函数,用于处理一个Promise数组。当数组中的所有Promise都完成时,Promise.all将返回一个新的Promise,该Promise将解析为包含所有输入Promise解析值的数组。如果任何一个Promise失败,返回的Promise将立即被标记为失败,并且该数组将只包含失败的Promise的错误。
function myPromiseAll(promiseArray) {
return new Promise((resolve, reject) => {
let results = [];
let promiseIndex = 0;
function checkPromise() {
if (promiseIndex >= promiseArray.length) {
// 所有Promise都已完成,可以解析结果并解决
resolve(results);
return;
}
let currentPromise = promiseArray[promiseIndex];
currentPromise.then(
(result) => {
results[promiseIndex] = result;
promiseIndex++;
checkPromise();
},
(error) => {
reject(error);
}
);
}
checkPromise();
});
}
这个函数接受一个Promise数组作为输入,并返回一个新的Promise。这个新的Promise将在所有输入Promise都完成时解析,或者在任何一个Promise失败时标记为失败。这个函数使用一个数组来跟踪每个Promise的结果,并使用一个索引来跟踪我们还需要多少个Promise才能完成。然后,我们递归地调用checkPromise函数,直到所有的Promise都完成。

浙公网安备 33010602011771号