> Как обработать успешное разрешение одного из промисов в функции any? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Для обработки успешного разрешения одного из промисов в Promise.any используется метод .then() или async/await. Promise.any возвращает первый успешно выполненный промис, игнорируя отклонённые, пока не найдёт хотя бы один resolved. Если все промисы отклонены, выбрасывается AggregateError.
Пример с .then():
JAVASCRIPTconst 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:
JAVASCRIPTasync function handleAny() {try {const result = await Promise.any([promise1, promise2, promise3]);console.log('Первый успешный результат:', result);} catch (error) {console.error('Все промисы отклонены:', error.errors);}}handleAny();
Важно: Promise.any не останавливает выполнение остальных промисов после нахождения первого успешного - они продолжают выполняться, но их результаты игнорируются.
> Похожие задачи по frontend
Как работает метод массива some?
Почему нельзя использовать forEach для реализации some с прерыванием?
В каком порядке выполняются промисы и их обработчики then/catch в JavaScript и как это влияет на порядок ошибок?
Как определить момент завершения всех промисов с ошибками для вызова reject в JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью