Параллельное получение данных с обработкой ошибок и таймаутами
TypeScript
Сложный
async
Задача «Параллельное получение данных с обработкой ошибок и таймаутами»
Реализуйте асинхронную функцию `fetchWithTimeout`, которая принимает массив URL (строки) и таймаут в миллисекундах. Функция должна параллельно отправлять HTTP-запросы ко всем URL, используя `fetch`. Если запрос выполняется дольше указанного таймаута, он должен быть отменен (через `AbortController`). Функция возвращает массив результатов в том же порядке, что и входные URL. Для каждого URL результатом является строка: успешный ответ (текст ответа) или сообщение об ошибке вида "Error: <тип ошибки>", где <тип ошибки> — "Timeout", если истек таймаут, или "Network", если произошла сетевая ошибка. Гарантируется, что URL валидны, но сервер может не отвечать или отвечать долго. Используйте `Promise.allSettled` для обработки всех результатов.
Формат ввода
Первая строка — число N (количество URL). Далее N строк, каждая содержит URL. Последняя строка — число T (таймаут в мс).
Формат вывода
N строк, каждая содержит результат запроса (текст ответа или сообщение об ошибке).
main.ts