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.
Метод Promise.race(iterable) возвращает выполненный или отклонённый промис, в зависимости от того, с каким результатом завершится первый из переданных промисов, со значением или причиной отклонения этого промиса.
Интерактивный пример
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, "one");
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "two");
});
Promise.race([promise1, promise2]).then((value) => {
console.log(value);
// Both resolve, but promise2 is faster
});
// Expected output: "two"
Синтаксис
Promise.race(iterable);
Параметры
Возвращаемое значение
Выполненный или отклонённый Promise
в зависимости от результата первого завершённого из переданных в итерируемом объекте промисов.
Описание
Метод race
возвращает Promise
с результатом, первого завершённого из переданных промисов. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.
Примеры
Использование Promise.race
– пример с setTimeout
var p1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 500, "один");
});
var p2 = new Promise(function (resolve, reject) {
setTimeout(resolve, 100, "два");
});
Promise.race([p1, p2]).then(function (value) {
console.log(value); // "два"
// Оба вернули resolve, однако p2 вернул результат первым
});
var p3 = new Promise(function (resolve, reject) {
setTimeout(resolve, 100, "три");
});
var p4 = new Promise(function (resolve, reject) {
setTimeout(reject, 500, "четыре");
});
Promise.race([p3, p4]).then(
function (value) {
console.log(value); // "три"
// p3 быстрее, поэтому выведется значение его resolve
},
function (reason) {
// Не вызывается
},
);
var p5 = new Promise(function (resolve, reject) {
setTimeout(resolve, 500, "пять");
});
var p6 = new Promise(function (resolve, reject) {
setTimeout(reject, 100, "шесть");
});
Promise.race([p5, p6]).then(
function (value) {
// Не вызывается
},
function (reason) {
console.log(reason); // "шесть"
// p6 быстрее, выводится его rejects
},
);
Спецификации
Specification |
---|
ECMAScript® 2025 Language Specification # sec-promise.race |
Совместимость с браузерами
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
race() |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support