Nodejs - Повторите ту же функцию при обратном вызове ошибки в производстве - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть функция javascript с setTimeOut, и я пытаюсь вызвать ту же функцию, если возникает какая-либо ошибка из-за вызова API. Я вызываю ту же функцию в блоке catch. Если мой сервер-узел выходит из строя, и ресурсы будут заблокированы или будут заблокированы продолжайте вызывать функцию getData ()

 let retry = ()=> {
          setTimeout(() => {
           getData() 
           retry()
       }, 3000); 
   }

   let getData = () =>{
    Someapi.getData().then((token) => {
        console.log(`Data after 3 seconds->${token}`)
    }).catch((err) => {
        getData()

    })
   }

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Я использую этот код повторения в моем проекте, он хорошо работает в производстве:

const pause = (duration) => {
  return new Promise(resolve => setTimeout(resolve, duration));
};
const retry = (retryTimes, func, delay) => {
  return func().catch(
    (err) => {
      if(retryTimes > 0) {
        return pause(delay).then(
          () => retry(retryTimes - 1, func, delay * 2)
        );
      } else {
        return Promise.reject(err);
      }
    }
  );
};
0 голосов
/ 18 ноября 2018

Я не знаю, работает ли это.

 let retry = () => {
  setTimeout(() => {
    getData();
    retry();
  }, 3000);
};

while (true) {
  let getData = () => {
    Someapi.getData()
      .then(token => {
        console.log(`Data after 3 seconds->${token}`);
        return false;
      })
      .catch(err => {
        return true;
      });
  };
}
...