Показать сообщение отдельно
  #7 (permalink)  
Старый 19.11.2018, 14:23
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Или цикл можно оставить циклом

набросок кода
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();

// тут конечно могут быть параметры и эта функция
// может ожидаться в другом асинхронном коде и т. д.

Последний раз редактировалось Malleys, 19.11.2018 в 14:37.
Ответить с цитированием