Или цикл можно оставить циклом
набросок кода
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function process() {
const responses = [];
const response = await fetch("/1")
const count = Number(await response.text());
let index = 0;
while(index++ < count) {
await delay(500);
const response = await fetch("/data-for-form-data");
const formData = new FormData();
const request = new Request("/send-form-data", {
body: formData,
method: "post"
});
// функция для проверки ответа
const isOk = async response => {
// например, тело ответа должно быть больше 100 символов
return (await response.text()) > 100;
};
var sendedFormResponse;
while(true) {
sendedFormResponse = await fetch(request);
if(isOk(sendedFormResponse))
break;
else
await delay(500)
}
array.push(sendedFormResponse);
}
for(const response of responses) {
// обработать массив со всеми результатами.
}
return responses;
}
process();
// тут конечно могут быть параметры и эта функция
// может ожидаться в другом асинхронном коде и т. д.