Как повторить несколько раз функцию Promise? - PullRequest
1 голос
/ 25 марта 2020

в моем приложении есть обещанная функция 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/

Вы можете мне помочь?

Кристоф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...