> Реализовать функцию, принимающую массив промисов и возвращающую массив результатов или первый reject в JavaScript (JavaScript)

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

Компании: IT-One

Стек: JavaScript

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

Вот реализация функции, которая принимает массив промисов и возвращает массив результатов в случае успеха всех промисов, либо первый reject:

JAVASCRIPT
function processPromises(promises) {
return Promise.all(promises)
.then(results => results)
.catch(error => {
throw error; // пробрасываем первый reject
});
}

Однако, если нужно получить именно массив результатов или выбросить первый reject (а не просто вернуть отклонённый промис), можно использовать более явный подход:

JAVASCRIPT
async function processPromises(promises) {
const results = [];
for (const promise of promises) {
try {
const result = await promise;
results.push(result);
} catch (error) {
throw error; // первый reject прерывает выполнение
}
}
return results;
}

Пример использования:

JAVASCRIPT
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
const p3 = Promise.reject(new Error('Ошибка'));
processPromises([p1, p2, p3])
.then(results => console.log(results))
.catch(error => console.error(error.message)); // "Ошибка"

Если нужно обработать все промисы, не прерываясь на первом reject, используйте Promise.allSettled.

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

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