普通方法
var time =1000,ids;
function simplePoller(queryFn,callback){
if(queryFn()){
return callback()
}else{
ids = setTimeout(function(){
clearInterval(ids);
ids =undefined;
console.log("等待了"+time+"s");
simplePoller(queryFn,callback);
time = time*1.5;
},time)
}
}
var num=0;
function queryFn(){
num++;
if(num>3) return true;
return false;
}
function callback(){
console.log("打印了");
}
simplePoller(queryFn,callback)
闭包
function fn(){
var time=1000,num=0,ids;
return{
simplePoller:function(){
if(!this.queryFn()){
clearTimeout(ids);
ids =setTimeout(()=>{
console.log("打印了"+num+"次");
// this.simplePoller();
this.simplePoller();
time*=1.5
},time)
}else{
return this.callback()
}
},
queryFn:function(){
num++;
if(num>3)return true;
return false;
},
callback:function(){
console.log("结束了");
}
}
}
var s = fn();
s.simplePoller();