Какой вывод будет у Promise.race при разных таймаутах

Будет выведена строка 2: Promise.race принимает результат первым завершившегося участника, здесь это таймер на 100 мс.

Короткий ответ

Что ответить на собеседовании

Будет выведена строка 2: Promise.race принимает результат первым завершившегося участника, здесь это таймер на 100 мс.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какое значение появится в консоли после выполнения данного кода:

const p1 = new Promise((resolve) => setTimeout(resolve, 500, "1"));
const p2 = new Promise((resolve) => setTimeout(resolve, 100, "2"));

Promise.race([p1, p2]).then((result) =>
  console.log(result)
);

Ответ

Будет выведена строка 2: Promise.race принимает результат первым завершившегося участника, здесь это таймер на 100 мс.

Результат race не зависит от позиции победившего Promise в массиве. Таймер на 500 мс продолжит работу: race не отменяет проигравшие операции. Если бы первым завершением было отклонение, общий Promise тоже был бы отклонён.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее