我有这个javascript函数,它使用计时器每2秒调用一次ajax文件。
但是,我发现在执行完以前的数据之前,会将此数据发送到ajax文件。也就是说,它在大约10秒内发送整个列表,而数据大约需要120秒才能处理。将javascript定时器函数转换为使用异步调用
有没有办法,我可以发送下一个数据节点,只有当前一个完成处理? cb.call(this)
正在用来调用一个函数,当这个定时器完成时,
而querylimit
是一个响应变量,如果它是真的退出函数。
var i = 0;
var querylimit=false;
function refreshTimer(list,cb,i){
if (!(i >= 0)) { i= 0; }
setTimeout((function(chunk){
i++;
return function(){
if (querylimit) { cb.call(this); }
if(i <= list.length && !querylimit){
refreshTimer(list,cb,i);
refreshClients(chunk);
}
if(i == list.length+1) { cb.call(this); }
if(i > list.length+1 || querylimit) { return null; }
}
}) (list[i]), 2000);
}
问候
尼基尔古普塔
“(!(I> = 0)){IF” - > ???? omg :)无论如何,不明白你想要完成什么。你想链接函数调用?那么,为什么你使用setTimeout?当第一个结束时,请致电下一个。 – 2011-03-06 10:21:47
当'我'有其他值(我使用'我'很多,因此..)是一个错误的事情? :| – Stoic 2011-03-06 10:27:13