Асинхронный запрос к множеству URL и сбор ответов

Запустите запросы через links.map и дождитесь Promise.all. Он сохраняет порядок входа независимо от скорости ответов; отдельно проверяйте response.ok.

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

Что ответить на собеседовании

Запустите запросы через links.map и дождитесь Promise.all. Он сохраняет порядок входа независимо от скорости ответов; отдельно проверяйте response.ok.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте асинхронную функцию getAllResponses, принимающую массив links. Для каждого элемента массива необходимо выполнить HTTP‑GET запрос и вернуть массив полученных ответов, при этом порядок элементов в результирующем массиве должен соответствовать порядку исходных ссылок в массиве links.

Ответ

Запустите запросы через links.map и дождитесь Promise.all. Он сохраняет порядок входа независимо от скорости ответов; отдельно проверяйте response.ok.

async function getAllResponses(links) {
  return Promise.all(links.map(async link => {
    const response = await fetch(link);
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    return response;
  }));
}

Здесь возвращаются объекты Response. Если нужны JSON-данные, замените return на return response.json() и явно зафиксируйте этот формат. Ошибка любого запроса отклоняет общий результат, но сама не отменяет остальные. Для очень большого массива нужен лимит параллелизма, а для частичных результатов — allSettled.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее