Promise.race()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

El método Promise.race(iterable) retorna una promesa que se cumplirá o no tan pronto como una de las promesas del argumento iterable se cumpla o se rechace, con el valor o razón de rechazo de ésta.

Sintaxis

Promise.race(iterable);

Parámetros

iterable

Un objeto iterable , como por ejemplo un Array. Vea iterable (en-US).

Retorna

Una Promise que se cumple o se rechaza tan pronto como una de las promesas dadas en el argumento iterable se cumple o se rechaza.

Descripción

La función race retorna una Promise que se comporta como tal. Se cumple o se rechaza, lo que suceda antes en alguno de sus argumentos (iterable).

Ejemplos

Usando Promise.race – ejemplos con setTimeout

js
var p1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, "uno");
});
var p2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "dos");
});

Promise.race([p1, p2]).then((value) => {
  console.log(value); // "dos"
  // Ambas se resuelven, pero la p2 antes.
});

// Ejemplo con un resolve y un reject en el mismo método race.
var p3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "tres");
});
var p4 = new Promise((resolve, reject) => {
  setTimeout(reject, 500, "cuatro");
});

Promise.race([p3, p4]).then(
  (value) => {
    console.log(value); // "tres"
    // p3 es mas rápida, así que se resuelve el race
  },
  (reason) => {
    // No es llamado
  },
);

var p5 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, "cinco");
});
var p6 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, "seis");
});

Promise.race([p5, p6]).then(
  (value) => {
    // No es llamado
  },
  (reason) => {
    console.log(reason); // "seis"
    // p6 es mas rápida, así que se rechaza
  },
);

Especificaciones

Specification
ECMAScript Language Specification
# sec-promise.race

Vea también