Верните 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.