Имеется список url-адресов. Нужно на каждый адрес отправить request запрос, получить ответ и сохранить его в массив. На выходе должен получиться массив ответов. Как реализовать такое с помощью асинхронной функции?
Через XMLHttpRequest реализовал (синхронные выполнение), всё отлично отрабатывает, но запросы выполняются по очереди и скорость выполнения скрипта оставляет желать лучшего. Насколько я понимаю fetch умеет выполнять такое асинхронно, но не пойму как на выходе получить массив ответов не используя await. С await он отрабатывает как надо, но скорость такая же как и у XMLHttpRequest, т.е. если я ничего не путаю с помощью await мы принудительно синхронизируем выполнение функции, т.е. снова теряем скорость?
Функция:
spoilerasync function get_response(request_url_list) {
var main_list = []
//alert(JSON.stringify(response))
for (var i = 0; i < request_url_list.length; i++) {
let response = await fetch(request_url_list[i]);
if (response.ok) { // если HTTP-статус в диапазоне 200-299 получаем тело ответа
let json = await response.json();
main_list.push(JSON.stringify(json))
}
else {
alert("Ошибка HTTP: " + response.status);
}
}
return main_list
}
Её вызов и сохранение результата:
var main_list = await get_response(request_url_list)