async function foo(val = 0) {
const response = await request(val); //предполагается, что request возвращает promise
if (response.error) throw new Error('something bad happened');
//делаем что-то с response
foo(response.newVal); //вызываем foo с новым val
}
function recursiveRequest(requestData) {
return fetch(
//здесь формируем запрос из requestData
).then(response => response.json()).then(result => {
if(result.isFinal) return result; // тут условие
return recursiveRequest(result.nextRequest); //вызываем следующий запрос
});
}
recursiveRequest({}).then(finalResult => {
//работаем с последним результатом
});
async function request(data) {
let result = data;
do {
result = await запрос(result);
} while (result не тот, который нужен);
return result;
}
function requestRecursive(data) {
return запрос(data).then(result => {
return result тот, который нужен
? result
: requestRecursive(result);
});
}