> Каким методом промиса выполнить несколько параллельных запросов и получить результат каждого (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: SmartWay
Стек: JavaScript
> Пример ответа
Для выполнения нескольких параллельных запросов и получения результатов каждого используется метод Promise.all(). Он принимает массив промисов и возвращает один промис, который разрешается массивом результатов в том же порядке, что и исходные запросы.
Пример:
JAVASCRIPTconst urls = ['/api/data1', '/api/data2', '/api/data3'];const promises = urls.map(url => fetch(url).then(res => res.json()));Promise.all(promises).then(results => {console.log(results); // [data1, data2, data3]}).catch(error => {console.error('Ошибка в одном из запросов:', error);});
Если нужно получить результаты даже при ошибках в отдельных запросах, используйте Promise.allSettled() - он возвращает массив объектов с полями status и value/reason.
JAVASCRIPTPromise.allSettled(promises).then(results => {results.forEach((result, index) => {if (result.status === 'fulfilled') {console.log(`Запрос ${index} успешен:`, result.value);} else {console.log(`Запрос ${index} отклонен:`, result.reason);}});});
Для максимальной производительности при большом количестве запросов можно использовать библиотеки вроде p-limit для контроля параллелизма.
> Похожие задачи по frontend
Как работают редьюсеры в Redux
Как работает Redux Saga
Можно ли работать с куки на фронтенде через JavaScript
Являются ли функции объектами в JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью