> Как записывать ошибки в массив по индексу, соответствующему индексу промиса в JavaScript? (JavaScript)

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

Компании: Яндекс

Стек: JavaScript

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

Для записи ошибок в массив по индексу соответствующего промиса можно использовать Promise.allSettled или обрабатывать каждый промис индивидуально. Вот пример с Promise.allSettled:

JAVASCRIPT
const promises = [
fetch('/api/1'),
fetch('/api/2'),
fetch('/api/3')
];
const errors = [];
const results = await Promise.allSettled(promises);
results.forEach((result, index) => {
if (result.status === 'rejected') {
errors[index] = result.reason; // записываем ошибку по индексу промиса
}
});
// errors: [undefined, Error, undefined] - если второй промис упал

Если нужно сохранить ошибки только для упавших промисов, а для успешных оставить undefined, массив можно предварительно инициализировать:

JAVASCRIPT
const errors = new Array(promises.length).fill(undefined);

Альтернативный подход - обработать каждый промис через .catch():

JAVASCRIPT
const promises = [p1, p2, p3];
const errors = [];
promises.forEach((promise, index) => {
promise.catch(error => {
errors[index] = error;
});
});

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

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

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