Javascript递归
我有一个ajax调用,我想在完成解析并将结果动画化到页面中后再调用它。这就是我被卡住的地方 我能够回忆起函数,但它似乎没有考虑动画中的延迟。i、 e.控制台一直以疯狂的速度输出值 我认为setInterval可能会有帮助,因为它是我延迟时间的总和,但我无法让它起作用Javascript递归,javascript,jquery,recursion,Javascript,Jquery,Recursion,我有一个ajax调用,我想在完成解析并将结果动画化到页面中后再调用它。这就是我被卡住的地方 我能够回忆起函数,但它似乎没有考虑动画中的延迟。i、 e.控制台一直以疯狂的速度输出值 我认为setInterval可能会有帮助,因为它是我延迟时间的总和,但我无法让它起作用 function loadEm(){ var result=new Array(); $.getJSON("jsonCall.php",function(results){ $.each(r
function loadEm(){
var result=new Array();
$.getJSON("jsonCall.php",function(results){
$.each(results, function(i, res){
rand = (Math.floor(Math.random()*11)*1000)+2000;
fullRand += rand;
console.log(fullRand);
$("tr:first").delay(rand).queue(function(next) {
doStuff(res);
next();
});
});
var int=self.setInterval("loadEm()",fullRand);
});
}
});
setTimeout
<代码>设置间隔将再次调用。。。再一次。。。再一次var fullRand
。如果没有它,每次调用loadElm时都会增加相同的全局变量。事实上,您应该对所有局部变量使用var
——这里包括rand
。包括变量和更多内容setTimeout(loadElm,fullRand)
--不要在第一个参数中使用字符串:)请参阅编码愉快。谢谢!我会实施它并让你知道!
// closure in JSON callback. see Jibbering notes.
var count = 0
$.each(results, function(i, res) {
var rand = (Math.floor(Math.random()*11)*1000)+2000
count++ // have to do action
$("tr:first").delay(rand).queue(function(next) {
...
count-- // action done
if (!count) { // means count == 0 here :-) then...
loadElm() // ...all actions done
}
})
})
if (!count) {
// err... no animations started :(
}