/**   * 实现 Promise.retry , 重试异步函数   * 失败后重试, 尝试指定次数后  抛出异样, reject   */  function fn() {    const num = Math.random();    return new Promise((resolve, reject) => {      setTimeout(() => {        if (num > 0.7) {          resolve(num);        } else {          reject(num);        }      }, num * 2000)    })  }  Promise.prototype.retry = (fn, times) => {    let total = times;    new Promise(async (resolve, reject) => {      while (total--) {        try {          const res = await fn();          console.log('执行胜利,后果为:', res);          resolve(res);          break;        } catch (err) {          // 达到指定times完结循环          if (!total) {            reject(err);          }        }      }    }).catch(() => {      console.log('执行实现,' + times + '次全副失败...');    })  }  Promise.retry(fn, 7);