> Реализовать функцию, принимающую массив промисов и возвращающую массив результатов или первый reject в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: JavaScript
> Пример ответа
Вот реализация функции, которая принимает массив промисов и возвращает массив результатов в случае успеха всех промисов, либо первый reject:
JAVASCRIPTfunction processPromises(promises) {return Promise.all(promises).then(results => results).catch(error => {throw error; // пробрасываем первый reject});}
Однако, если нужно получить именно массив результатов или выбросить первый reject (а не просто вернуть отклонённый промис), можно использовать более явный подход:
JAVASCRIPTasync 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;}
Пример использования:
JAVASCRIPTconst 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.
> Похожие задачи по frontend
Как реализовать функцию retry для повторного вызова асинхронной функции при ошибке в JavaScript
Как реализовать мемоизацию функции в JavaScript
Как решать задачу анимации шаг за шагом
Что такое Redux, зачем он нужен и как устроен
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью