Будет выведена строка 2: Promise.race принимает результат первым завершившегося участника, здесь это таймер на 100 мс.
Какой вывод будет у Promise.race при разных таймаутах
Будет выведена строка 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 тоже был бы отклонён.