返回

Promise.all和promise.race的应用场景举例

前端

当开始学习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对象,该对象在第一个任务完成或失败时解决。这两个方法在实际开发中都有广泛的应用场景。