Функция, объединяющая результаты двух промисов

Верните Promise.all([first, second]). Он сохраняет порядок входов в результирующем массиве и отклоняется при первой замеченной ошибке любого из двух Promise.

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

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

Верните Promise.all([first, second]). Он сохраняет порядок входов в результирующем массиве и отклоняется при первой замеченной ошибке любого из двух Promise.

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

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

Условие

Создайте функцию, принимающую два промиса и возвращающую массив их значений, если оба завершаются успешно. Если любой из промисов отклоняется, функция должна сразу бросить ошибку.

Ответ

Верните Promise.all([first, second]). Он сохраняет порядок входов в результирующем массиве и отклоняется при первой замеченной ошибке любого из двух Promise.

function combinePromises(first, second) {
  return Promise.all([first, second]);
}

Более быстрый второй Promise не меняет позиции результатов: сначала значение first, затем second. «Сразу бросить» для асинхронной функции означает отклонить возвращённый Promise, а не синхронный throw в вызывающем стеке. Уже выполняющийся второй запрос не отменяется автоматически; отмену нужно реализовывать средствами самих операций, например AbortController.

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

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

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

Подробнее