function customPromiseAll(promises) {
return new Promise((resolve, reject) => {
let results = [];
let completedPromises = 0;
promises.forEach((promise, index) => {
promise.then((result) => {
results[index] = result;
completedPromises++;
if (completedPromises === promises.length) {
resolve(results);
}
}).catch((error) => {
reject(error);
});
});
if (promises.length === 0) {
resolve(results);
}
});
}
// 使用自定义的 Promise.all 处理两个示例异步任务
let promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 已完成');
}, 1000);
});
let promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 2 已完成');
}, 2000);
});
customPromiseAll([promise1, promise2])
.then((results) => {
console.log(results); // 所有 Promise 都已完成时输出结果
})
.catch((error) => {
console.error(error); // 如果任一 Promise 失败则捕获错误
});
这段代码通过自定义函数 customPromiseAll 来实现了一个简单的 Promise.all 功能,用于处理多个 Promise 对象,并在它们都成功完成后执行特定的操作。请注意,这只是一个简单的实现方式,实际上 Promise.all 还有更多复杂的行为和边界情况需要考虑。