休眠
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
网友评论