美文网首页
js错误重试&休眠(sleep)

js错误重试&休眠(sleep)

作者: 十年之后_b94a | 来源:发表于2020-03-16 11:16 被阅读0次

休眠

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

相关文章

网友评论

      本文标题:js错误重试&休眠(sleep)

      本文链接:https://www.haomeiwen.com/subject/gswpsctx.html