Promise超時重新請求


export default function (promiseProducer, params, interval, attemptTimes) {
  interval = typeof interval === "number" && interval >= 300 ? interval : 500;
  attemptTimes = typeof attemptTimes === "number" && attemptTimes >= 1 ? attemptTimes : 10000;
  return new Promise((resolve, reject) => {
    let promise = null;
    let executePromise = timer => {
      if(attemptTimes < 1){
        window.clearInterval(timer);
        reject(new Error('promise not until timeout'));
        return void 0;
      }
      attemptTimes -= 1;
      return promiseProducer(params).then(res => {
        window.clearInterval(timer);
        resolve(res);
      }).catch((e) => {
        throw new Error(e);
      });
    };

    let timer = window.setInterval(() => {
      promise = executePromise(timer);
    }, interval);
    promise = executePromise(timer);
  });
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM