> Как обработать успешное разрешение одного из промисов в функции any? (JavaScript)

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

Компании: Яндекс

Стек: JavaScript

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

Для обработки успешного разрешения одного из промисов в Promise.any используется метод .then() или async/await. Promise.any возвращает первый успешно выполненный промис, игнорируя отклонённые, пока не найдёт хотя бы один resolved. Если все промисы отклонены, выбрасывается AggregateError.

Пример с .then():

JAVASCRIPT
const promise1 = Promise.reject('Ошибка 1');
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'Успех 2'));
const promise3 = Promise.reject('Ошибка 3');
Promise.any([promise1, promise2, promise3])
.then((result) => {
console.log('Первый успешный результат:', result); // 'Успех 2'
})
.catch((error) => {
console.error('Все промисы отклонены:', error.errors);
});

Пример с async/await:

JAVASCRIPT
async function handleAny() {
try {
const result = await Promise.any([promise1, promise2, promise3]);
console.log('Первый успешный результат:', result);
} catch (error) {
console.error('Все промисы отклонены:', error.errors);
}
}
handleAny();

Важно: Promise.any не останавливает выполнение остальных промисов после нахождения первого успешного - они продолжают выполняться, но их результаты игнорируются.

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

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