自定义实现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都完成。