Показать сообщение отдельно
  #2 (permalink)  
Старый 22.10.2023, 16:52
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,775

Использовать асинхронное программирование (с Promise, async await)
Как то так это записать можно

async function getOption(id = null){
	function getPart (id) {
		return new Promise (res => {			
			$.ajax(
			{
				url: './ajax.php',
				type: 'post',
				dataType: 'json',
				data: {
				  id: id
				},
				success: function(data){
					let option = '';
					for(i = 0; i < data.result.length; i++){
						option += '<option value="' + data.result[i].id + '">' + data.result[i].title + '</option>';
					}
					res ({next:data.has_next, option, endsId: data.result[data.result.length - 1]?.id}) ;
				}
			});
		})
	}
	
    let option = '';
    let endsId = id;
	do {
		const res = await getPart(endsId);
		option += res.option;
		endsId = res.endsId;
	} while (res.next);
	
	return option;
}

// Вызов из асинхронной функции

const options = await getOption ();
	// тут обработка результата
	
// Вызов из обычной функции

getOption().then (options => {
	// тут обработка результата
});

Последний раз редактировалось voraa, 22.10.2023 в 18:06.
Ответить с цитированием