Prmoise retry

2020-06-20  本文已影响0人  Chris__Liu
Promise.retry = function (fn, interval, times) {
        return new Promise((resolve, reject) => {
          fn()
            .then((res) => resolve(res))
            .catch((e) => {
              if (times > 0) {
                console.log("重新请求")
                setTimeout(()=>{
                  resolve(Promise.retry(fn, interval, times - 1))
                },interval)
              } else {
                reject("超出最大轮询次数");
              }
            });
        });
      };

      const test = function () {
        return new Promise((resolve, reject) => {
          const num = Math.floor(Math.random() * 10);
          if (num > 7) {
            resolve(num);
          } else {
            reject(new Error(num));
          }
        });
      };

      Promise.retry(test, 1000, 5)
        .then((res) => {
          console.log(res);
        })
        .catch((e) => console.log(e));
上一篇 下一篇

猜你喜欢

热点阅读