/***实现Promise.retry,重试异步函数*失败后重试,尝试指定次数后抛出异常,reject*/functionfn(){constnum=Math.随机的();returnnewPromise((resolve,reject)=>{setTimeout(()=>{if(num>0.7){resolve(num);}else{reject(num);}},num*2000)})}Promise.retry=(fn,times)=>{让total=times;newPromise(async(resolve,reject)=>{while(total--){try{constres=awaitfn();console.log('执行成功,结果为:',res);resolve(res);break;}catch(err){//当达到指定时间时结束循环if(!total){reject(err);}}}}).catch(()=>{console.log('执行完成,'+times+'timesallfailed...');})}Promise.retry(fn,7);
