帮我手写一个promise.all
时间: 2023-10-27 18:49:54 浏览: 38
当然,我可以帮你手写一个 Promise.all()。
Promise.all() 方法接收一个由 Promise 对象组成的数组作为参数,在这个数组中,每个 Promise 都是一段异步代码,每个 Promise 在异步操作完成后会返回一个值,这些值会按照 Promise 在数组中的顺序返回到 Promise.all() 方法的回调函数中。
下面是 Promise.all() 方法的手写代码示例:
function promiseAll(promises) {
return new Promise((resolve, reject) => {
let results = [];
let count = promises.length;
for (let i = 0; i < count; i++) {
promises[i].then((result) => {
results[i] = result;
count--;
if (count === 0) {
resolve(results);
}
}).catch((error) => {
reject(error);
});
}
});
}
使用示例:
let promise1 = Promise.resolve(1);
let promise2 = Promise.resolve(2);
let promise3 = Promise.resolve(3);
promiseAll([promise1, promise2, promise3]).then((results) => {
console.log(results); // [1, 2, 3]
}).catch((error) => {
console.error(error);
});