Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Promise.allSettled, Promise.all, error handling, async/await, parallel requests

Как обработать ситуацию, когда хотя бы один из нескольких параллельных запросов вернул ошибку?

Вопрос проверяет понимание обработки ошибок при параллельных асинхронных операциях в JavaScript, что важно для создания отказоустойчивых приложений.

Короткий ответ

Для обработки ошибок при параллельных запросах используйте Promise.allSettled, который возвращает результаты всех промисов, включая отклонённые. Promise.all отклоняется при первой ошибке, что может быть нежелательно. Promise.allSettled позволяет обработать каждый запрос индивидуально, не прерывая выполнение остальных.

Длинный ответ

Обработка ошибок при параллельных запросах

Когда несколько запросов выполняются параллельно, важно корректно обрабатывать ошибки, чтобы один сбой не нарушил работу всего приложения. В JavaScript для этого используются методы Promise.all и Promise.allSettled.

Promise.all

Promise.all принимает массив промисов и возвращает один промис, который разрешается, когда все промисы выполнены успешно. Если хотя бы один промис отклоняется, Promise.all немедленно отклоняется с ошибкой этого промиса. Это поведение подходит, когда все запросы критически важны и при ошибке нужно остановить выполнение.

const requests = [fetch('/api/1'), fetch('/api/2'), fetch('/api/3')];
try {
  const results = await Promise.all(requests);
  console.log('Все запросы успешны:', results);
} catch (error) {
  console.error('Ошибка в одном из запросов:', error);
}

Promise.allSettled

Promise.allSettled ожидает завершения всех промисов, независимо от их статуса. Он возвращает массив объектов с полями status ('fulfilled' или 'rejected') и value/reason. Это позволяет обработать каждый запрос индивидуально, не прерывая выполнение остальных.

const requests = [fetch('/api/1'), fetch('/api/2'), fetch('/api/3')];
const results = await Promise.allSettled(requests);
results.forEach((result, index) => {
  if (result.status === 'fulfilled') {
    console.log(`Запрос ${index + 1} успешен:`, result.value);
  } else {
    console.error(`Запрос ${index + 1} ошибка:`, result.reason);
  }
});

Вывод

Используйте Promise.all, когда все запросы критически важны и при ошибке нужно остановить выполнение. Используйте Promise.allSettled, когда нужно обработать каждый запрос независимо, например, для частичного обновления интерфейса или логирования ошибок.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#Promise.allSettled

#Promise.all

#error handling

#async/await

#parallel requests

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию