> Как записывать ошибки в массив по индексу, соответствующему индексу промиса в JavaScript? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Для записи ошибок в массив по индексу соответствующего промиса можно использовать Promise.allSettled или обрабатывать каждый промис индивидуально. Вот пример с Promise.allSettled:
JAVASCRIPTconst 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, массив можно предварительно инициализировать:
JAVASCRIPTconst errors = new Array(promises.length).fill(undefined);
Альтернативный подход - обработать каждый промис через .catch():
JAVASCRIPTconst promises = [p1, p2, p3];const errors = [];promises.forEach((promise, index) => {promise.catch(error => {errors[index] = error;});});
Важно: второй способ не дожидается выполнения всех промисов, поэтому для синхронного получения всех ошибок лучше использовать Promise.allSettled.
> Похожие задачи по frontend
Как реализовать рекурсивную чистую функцию для инверсии значений в объекте в JavaScript
Что такое замыкания в JavaScript и для чего они нужны
Как использовать несколько потоков в JavaScript
Как реализовать полифилл для Array.prototype.some с учетом callback и thisArg?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью