> Каким методом промиса получить результат первого выполненного запроса (JavaScript)

Уровень: senior · Роль: qa · Категория: Технические вопросы

Компании: Автомакон

Стек: JavaScript

> Пример ответа

Для получения результата первого выполненного (успешного или отклонённого) промиса используется метод Promise.race(). Он принимает массив промисов и возвращает новый промис, который разрешается или отклоняется вместе с первым завершённым промисом.

Пример:

JAVASCRIPT
const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'быстрый'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 200, 'медленный'));
Promise.race([promise1, promise2])
.then(result => console.log(result)) // 'быстрый'
.catch(error => console.error(error));

Если нужно получить результат именно первого успешного запроса (игнорируя ошибки), используйте Promise.any() (ES2021):

JAVASCRIPT
const promise1 = Promise.reject('ошибка');
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'успех'));
Promise.any([promise1, promise2])
.then(result => console.log(result)) // 'успех'
.catch(error => console.error(error)); // AggregateError, если все отклонены

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью