var WaitUntil = function(cond, callback, interval, trys, times) {
var timer = null;
var tryCount = 0;
var runCount = 0;
interval = interval || 100;
trys = trys || 300;
times = times || 1;
var wait = function(cond, callback, interval, trys, times) {
if(timer) clearTimeout(timer);
timer = setTimeout(function(){
tryCount++;
if(tryCount > trys) {
return;
}
if(cond()){
runCount++;
if(callback) callback('OK');
if(times < 0 || runCount < times) {
wait(cond, callback, interval, trys, times);
}
} else {
wait(cond, callback, interval, trys, times);
}
}, interval);
}
wait(cond, callback, interval, trys, times);
}
//测试
//var a=0;
//s=setInterval(function(){a++;console.log(a)}, 100);
//WaitUntil(()=>{return a>50}, ()=>{console.log('result',a);});
//WaitUntil(()=>{return a>100}, ()=>{console.log('result',a);});
//测试嵌套调用
// var a=0;
// s=setInterval(function(){a++;console.log(a)}, 100);
// WaitUntil(()=>{return a>50}, ()=>{
// console.log('result',a);
// WaitUntil(()=>{return a>100}, ()=>{console.log('result',a);});
// });
//使用示例
//WaitUntil(function(){return typeof jQuery !=="undefined" && $(".test").length>0}, function(){
// alert($(".test").html());
//});
//其他参数
//condfunc 满足条件的函数
//callback 条件满足后执行的回调函数
//interval 监听满足条件的时间间隔,单位毫秒,默认100
//trys 尝试次数,超过这个数值就停止监听,默认为300(因默认间隔是100毫秒,所以默认停止监控时间为300*100毫秒,即30秒)
//times 执行次数,默认执行1次,-1为无限次,0会忽略,等同于1次
console