返回

各种承诺:了解 Promise 的四种常用方法

前端

译文

大家好!欢迎来到技术博客。在本文中,我们将探讨四种常用的 Promise 方法,分别是 Promise.all、Promise.race、Promise.resolve 和 Promise.reject。掌握这些方法,将使您在编写异步 JavaScript 代码时更加得心应手。

Promise.all

Promise.all 方法接收一个 Promise 数组,并返回一个新的 Promise。这个新 Promise 将在所有传入的 Promise 都被 resolved 或 rejected 后才进行 resolve 或 reject。

例如,假设我们有一个 Promise 数组,其中包含了三个 Promise:

const promises = [
  Promise.resolve(1),
  Promise.resolve(2),
  Promise.resolve(3)
];

我们可以使用 Promise.all 方法来等待所有这些 Promise 都被 resolved,然后将它们的结果作为数组返回:

Promise.all(promises).then((results) => {
  console.log(results); // [1, 2, 3]
});

如果传入的 Promise 数组中有一个 Promise 被 rejected,那么 Promise.all 方法将立即被 rejected,并且不会等待其他 Promise 被 resolved。

Promise.race

Promise.race 方法与 Promise.all 方法类似,但它只等待第一个被 resolved 或 rejected 的 Promise,然后立即返回该 Promise 的结果。

例如,假设我们有一个 Promise 数组,其中包含了三个 Promise:

const promises = [
  Promise.resolve(1),
  Promise.reject(2),
  Promise.resolve(3)
];

我们可以使用 Promise.race 方法来等待第一个被 resolved 或 rejected 的 Promise,然后将它的结果作为值返回:

Promise.race(promises).then((result) => {
  console.log(result); // 1
}, (error) => {
  console.log(error); // 2
});

在上面的示例中,Promise.race 方法将立即返回 Promise.resolve(1),因为它是第一个被 resolved 的 Promise。

Promise.resolve

Promise.resolve 方法将一个值包装成一个 resolved 的 Promise。

例如,我们可以使用 Promise.resolve 方法来创建一个 resolved 的 Promise,其中包含的值为 1:

const promise = Promise.resolve(1);

promise.then((result) => {
  console.log(result); // 1
});

Promise.reject

Promise.reject 方法将一个值包装成一个 rejected 的 Promise。

例如,我们可以使用 Promise.reject 方法来创建一个 rejected 的 Promise,其中包含的错误值为 2:

const promise = Promise.reject(2);

promise.catch((error) => {
  console.log(error); // 2
});

结语

Promise 是 JavaScript 中非常强大的工具,它可以帮助我们编写更健壮、更易于维护的异步代码。通过掌握 Promise.all、Promise.race、Promise.resolve 和 Promise.reject 这四种常用方法,我们可以轻松地处理各种异步操作。