> Почему Promise.race не подходит для выбора лучшего покупателя в JavaScript (JavaScript)

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

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

Стек: JavaScript

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

Promise.race завершается при первом же разрешённом или отклонённом промизе. Для выбора лучшего покупателя это неприменимо, потому что:

  1. Нет гарантии качества: race возвращает результат самого быстрого промиса, а не самого выгодного. Лучший покупатель может ответить позже, но предложить лучшую цену или условия.

  2. Игнорирование отклонений: Если первый промис отклоняется (например, покупатель передумал), race сразу завершится с ошибкой, даже если другие промисы ещё в работе и могли бы дать успешный результат.

  3. Потеря контекста: Для выбора лучшего покупателя нужно дождаться всех ответов и сравнить их (например, по цене, срокам, надёжности). race этого не делает - он просто берёт первого.

Вместо race используйте Promise.allSettled или Promise.all с последующей фильтрацией и сортировкой результатов. Например:

JAVASCRIPT
const 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];

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

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