js错误重试&休眠(sleep)

2020-03-16  本文已影响0人  十年之后_b94a

休眠

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
上一篇 下一篇

猜你喜欢

热点阅读