Использовать асинхронное программирование (с 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 => {
// тут обработка результата
});