> Почему Promise.race не подходит для выбора лучшего покупателя в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Promise.race завершается при первом же разрешённом или отклонённом промизе. Для выбора лучшего покупателя это неприменимо, потому что:
-
Нет гарантии качества:
raceвозвращает результат самого быстрого промиса, а не самого выгодного. Лучший покупатель может ответить позже, но предложить лучшую цену или условия. -
Игнорирование отклонений: Если первый промис отклоняется (например, покупатель передумал),
raceсразу завершится с ошибкой, даже если другие промисы ещё в работе и могли бы дать успешный результат. -
Потеря контекста: Для выбора лучшего покупателя нужно дождаться всех ответов и сравнить их (например, по цене, срокам, надёжности).
raceэтого не делает - он просто берёт первого.
Вместо race используйте Promise.allSettled или Promise.all с последующей фильтрацией и сортировкой результатов. Например:
JAVASCRIPTconst results = await Promise.allSettled(promises);const bestBuyer = results.filter(r => r.status === 'fulfilled').map(r => r.value).sort((a, b) => b.price - a.price)[0];
> Похожие задачи по frontend
Как исправить проблему с var в цикле с setTimeout в JavaScript
Как написать полифил для метода map в JavaScript
Как работает массив tickets в JavaScript
Как различать и отличать action в Redux?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью