Метод Promise.race(iterable) возвращает выполненное или отклоненное обещание, в зависимости от того, с каким результатом завершится первое из переданных обещаний, со значением или причиной отклонения этого обещания.
Синтакс
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
});
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Promise.race' в этой спецификации. |
Стандарт | Изначальное определение в стандарте ECMA. |
ECMAScript (ECMA-262) Определение 'Promise.race' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.