返回
Promise.all和promise.race的应用场景举例
前端
2023-11-27 15:48:10
当开始学习Promise时,许多人都会对Promise.all和promise.race感到困惑。本文将通过示例来说明这两个方法的应用场景。
Promise.all
Promise.all用于同时执行多个异步任务,并返回一个新的Promise对象,该对象在所有任务都完成或有一个任务失败时解决。
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功!');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('也成功了!');
}, 2000);
});
Promise.all([promise1, promise2]).then((values) => {
console.log(values); // 输出:[ '成功!', '也成功了!' ]
});
promise.race
promise.race用于同时执行多个异步任务,并返回一个新的Promise对象,该对象在第一个任务完成或失败时解决。
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功!');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject('失败!');
}, 2000);
});
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // 输出:'成功!'
}, (reason) => {
console.log(reason); // 不会执行
});
应用场景
Promise.all和promise.race在实际开发中都有广泛的应用场景。
- Promise.all可用于批量处理异步任务,如同时获取多个资源或同时发送多个请求。
- promise.race可用于实现超时机制或竞争机制,如同时发起多个请求,并选择第一个返回结果的请求。
总结
Promise.all和promise.race是Promise对象提供的两个重要方法。Promise.all用于同时执行多个异步任务,并返回一个新的Promise对象,该对象在所有任务都完成或有一个任务失败时解决。promise.race用于同时执行多个异步任务,并返回一个新的Promise对象,该对象在第一个任务完成或失败时解决。这两个方法在实际开发中都有广泛的应用场景。