Prmoise retry

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));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。