Promise.all()
是 JavaScript 中的一个方法,用于处理多个 Promise 对象。当所有传入的 Promise 都成功地完成(fulfilled)时,它将返回一个新的 Promise,该 Promise 将解析为一个包含所有成功完成的 Promise 结果的数组。如果任何一个 Promise 被拒绝(rejected),则 Promise.all()
立即被拒绝,并返回第一个被拒绝的 Promise 的错误。
Promise.all()
可以接受不同类型的数组,包括:
当你需要并行执行多个异步操作,并且只有在所有操作都完成后才继续执行下一步时,可以使用 Promise.all()
。
以下是一些不同类型的数组上使用 Promise.all()
的示例:
const promises = [
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3)
];
Promise.all(promises)
.then(results => {
console.log(results); // [1, 2, 3]
})
.catch(error => {
console.error(error);
});
const promises = [
Promise.resolve({ id: 1, name: 'Alice' }),
Promise.resolve({ id: 2, name: 'Bob' }),
Promise.resolve({ id: 3, name: 'Charlie' })
];
Promise.all(promises)
.then(results => {
console.log(results); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
})
.catch(error => {
console.error(error);
});
const promises = [
Promise.resolve(1),
Promise.resolve({ id: 2, name: 'Bob' }),
Promise.resolve(3)
];
Promise.all(promises)
.then(results => {
console.log(results); // [1, { id: 2, name: 'Bob' }, 3]
})
.catch(error => {
console.error(error);
});
Promise.all()
会立即被拒绝。const promises = [
Promise.resolve(1),
Promise.reject(new Error('Error in promise 2')),
Promise.resolve(3)
];
Promise.all(promises)
.then(results => {
console.log(results);
})
.catch(error => {
console.error(error); // Error: Error in promise 2
});
Promise.allSettled()
来处理这种情况,它会等待所有 Promise 完成,无论它们是成功还是失败。const promises = [
Promise.resolve(1),
Promise.reject(new Error('Error in promise 2')),
Promise.resolve(3)
];
Promise.allSettled(promises)
.then(results => {
console.log(results);
// [
// { status: 'fulfilled', value: 1 },
// { status: 'rejected', reason: Error: Error in promise 2 },
// { status: 'fulfilled', value: 3 }
// ]
});
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云