> Каким методом промиса выполнить несколько параллельных запросов и получить результат каждого (JavaScript)

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

Компании: SmartWay

Стек: JavaScript

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

Для выполнения нескольких параллельных запросов и получения результатов каждого используется метод Promise.all(). Он принимает массив промисов и возвращает один промис, который разрешается массивом результатов в том же порядке, что и исходные запросы.

Пример:

JAVASCRIPT
const 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.

JAVASCRIPT
Promise.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 для контроля параллелизма.

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

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