в моем приложении есть обещанная функция serverGet (), которая выполняет вызов сервера. Иногда сервер возвращает мне ответ HTTP 200, но с пустым объектом. Если я попробую 2 или 3 раза, я получу полный JSON. Пора найти окончательное решение, я хочу создать сценарий JS, позволяющий повторять эту обещанную функцию несколько раз, пока не получу результат.
Вот то, что я разработал, но, к сожалению, оно работает ничего не возвращать при повторных попытках 4-3-2-1:
function promiseWithRetry(fn, retries){
console.log("retry :"+retries);
return new Promise(function(resolve, reject) {
fn.then(function(response){
if(_.isEmpty(response) && retries > 0){
console.log("start new retry");
Promise.resolve(promiseWithRetry(fn, retries-1));
}else{
console.log("resolve");
resolve(response);
}
});
});
}
promiseWithRetry(serverGet(parameters), 5).then(function(response){
console.log(response)
});
Для имитации serverGet () я написал в jsfiddle небольшую случайную функцию, поэтому выполните код несколько раз для его проверки:
https://jsfiddle.net/christophes/krgvsfcy/
Вы можете мне помочь?
Кристоф