如何手写一个 Promise.all?
网友回复
// 自定义 Promise.all 的实现 function myPromiseAll(promises) { return new Promise((resolve, reject) => { let results = []; let count = 0; for (let i = 0; i < promises.length; i++) { promises[i].then((result) => { results[i] = result; count++; if (count === promises.length) { resolve(results); } }).catch((error) => { reject(error); }); } }); } // 使用 Promise.all let p1 = Promise.resolve(1); let p2 = Promise.resolve(2); let p3 = Promise.resolve(3); Promise.all([p1, p2, p3]).then((results) => { console.log(results); // [1, 2, 3] }).catch((error) => { console.error(error); }); // 使用自定义 Promise.all let p4 = new Promise((resolve, reject) => { setTimeout(() => { resolve(4); }, 1000); }); let p5 = new Promise((resolve, reject) => { setTimeout(() => { resolve(5); }, 500); }); myPromiseAll([p4, p5]).then((results) => { console.log(results); // [4, 5] }).catch((error) => { console.error(error); });