Dharam
Dharam

Reputation: 479

Nodejs - Retry same function on error callback in production

I have a javascript function with setTimeOut and I am retrying to call same function, if any error from API call.I am calling same function in catch block.Is my node server is going crash and resources will be blocked or it will keep calling getData() function

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

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

    })
   }

Upvotes: 0

Views: 1546

Answers (2)

menya
menya

Reputation: 1525

I use this retry code in my project, it works well in production:

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);
      }
    }
  );
};

Upvotes: 1

Erdogan Cihan
Erdogan Cihan

Reputation: 26

I do not know if this work.

 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;
      });
  };
}

Upvotes: 1

Related Questions