js错误重试&休眠(sleep)

休眠

function sleep(time){
  return new Promise((resolve,reject)=>{
    setTimeout(resolve,time);//=>setTimeout(()=>{resolve()},time)
  })
}
使用:
(async()=>{
  await sleep(1000);
})

错误重试

/*
  @fn 错误重试的函数
  @reMax 错误重试几次,默认三次
*/
function aotuPlay(fn,reMax = 3){
  let reCount = 0;
  return func = function(){
    let arg = arguments;
    return new Promise((resolve,reject)=>{
      fn(...arg)  //把需要重试的函数执行一次
      .then(res=>{
          resolve(res);
      }).catch(async e=>{
        if(reCount <reMax  ){
          reCount ++;
          await sleep(1000);//1s后重试
          func(...arg);
        }else{
          //超过重试次数 抛出异常
          reject(e);
        }
      })  
    })
  }
}

function testAutoPlay(n){//这个需要重试的函数
  return new Promise((resolve,reject)=>{
    console.log(n);
    try{
    JSON.parse("{{")//肯定会报错
    }catch(e){
      reject(e);
    }
  })
}

let t = aotuPlay(testAutoPlay,10);
t("测试的");
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容