📜  JavaScript Promise.race() 方法(1)

📅  最后修改于: 2023-12-03 14:42:26.594000             🧑  作者: Mango

JavaScript Promise.race() 方法

简介

Promise.race() 方法返回一个 Promise,该 Promise 解析于第一个解析或拒绝的 Promise。

该方法接受一个可迭代对象作为参数,例如数组,其中每个元素都是一个 Promise。它会返回一个新的 Promise 对象,该对象与第一个解析或拒绝的 Promise 相关联。

语法
Promise.race(iterable)

参数:

  • iterable(可迭代对象):一个可迭代对象,如数组,其每个元素都是一个 Promise 对象。

返回值:

  • 返回一个新的 Promise 对象,该对象与第一个解析或拒绝的 Promise 相关联。
示例

下面是一个使用 Promise.race() 方法的示例:

const promise1 = new Promise((resolve) => {
  setTimeout(() => {
    resolve('Promise 1');
  }, 1000);
});

const promise2 = new Promise((resolve) => {
  setTimeout(() => {
    resolve('Promise 2');
  }, 2000);
});

const promise3 = new Promise((resolve) => {
  setTimeout(() => {
    resolve('Promise 3');
  }, 3000);
});

Promise.race([promise1, promise2, promise3])
  .then((result) => {
    console.log(result); // 输出:'Promise 1'
  })
  .catch((error) => {
    console.error(error);
  });

在上面的示例中,我们创建了三个 Promise 对象,它们分别在一定的延迟后解析。然后我们使用 Promise.race() 方法将这三个 Promise 对象传递给它,并使用 .then() 方法处理第一个成功解析的 Promise。在本例中,由于 promise1 的延迟时间最短,因此它第一个解析,我们会得到 'Promise 1' 的输出。

注意事项
  • 如果传递给 Promise.race() 方法的可迭代对象中的任何一个元素是已经解析或拒绝的 Promise,那么 Promise.race() 将会立即返回该 Promise 的解析值或拒因。
  • 如果传递给 Promise.race() 方法的可迭代对象为空,则返回的 Promise 将永远等待,不会被解析或拒绝。

更多关于 Promise 的方法和用法,请参考 MDN Promise 文档

以上是有关 JavaScript Promise.race() 方法的介绍,该方法可用于处理多个 Promise 对象,以便在第一个解析或拒绝的 Promise 上继续执行操作。