Запустите запросы через links.map и дождитесь Promise.all. Он сохраняет порядок входа независимо от скорости ответов; отдельно проверяйте response.ok.
Асинхронный запрос к множеству URL и сбор ответов
Запустите запросы через 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.