Благодарю за ответ. Сам вчера весь день штудировал про
Promise, но что-то толком у меня не получилось.
Взял Ваш код, немного поправил и все получилось. Спасибо!
Для тех кому вдруг понадобиться такая штука...
async function getOption(id = null){
function getPart (id) {
return new Promise (promise => {
$.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].value + '</option>';
}
promise ({
next:data.has_next,
option,
endsId: data.result[data.result.length - 1]?.id
}) ;
}
});
})
}
let start = true;
let option = '';
let endsId = id;
while (start){
const promise = await getPart(endsId);
option += promise.option;
endsId = promise.endsId;
start = promise.next;
}
return option;
}
// Вызов из асинхронной функции
const options = (async () => {await getOption()});
// тут обработка результата
// Вызов из обычной функции
getOption().then (options => {
console.log(options)
});