Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript递归_Javascript_Jquery_Recursion - Fatal编程技术网

Javascript递归

Javascript递归,javascript,jquery,recursion,Javascript,Jquery,Recursion,我有一个ajax调用,我想在完成解析并将结果动画化到页面中后再调用它。这就是我被卡住的地方 我能够回忆起函数,但它似乎没有考虑动画中的延迟。i、 e.控制台一直以疯狂的速度输出值 我认为setInterval可能会有帮助,因为它是我延迟时间的总和,但我无法让它起作用 function loadEm(){ var result=new Array(); $.getJSON("jsonCall.php",function(results){ $.each(r

我有一个ajax调用,我想在完成解析并将结果动画化到页面中后再调用它。这就是我被卡住的地方

我能够回忆起函数,但它似乎没有考虑动画中的延迟。i、 e.控制台一直以疯狂的速度输出值

我认为setInterval可能会有帮助,因为它是我延迟时间的总和,但我无法让它起作用

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
    <代码>设置间隔将再次调用。。。再一次。。。再一次

  • 在loadElm顶部(或JSON回调内部)使用
    var fullRand
    。如果没有它,每次调用loadElm时都会增加相同的全局变量。事实上,您应该对所有局部变量使用
    var
    ——这里包括
    rand
    。包括变量和更多内容

  • 使用
    setTimeout(loadElm,fullRand)
    --不要在第一个参数中使用字符串:)请参阅

  • 检查JavaScript错误(将firebug/IE开发工具/错误控制台放在手边)

  • >P>而不是使用<代码> SETTIMEOUT,请考虑对动画中有多少动画完成的数量进行了统计,总共有多少个已经完成了!想象一下:

    ===


    编码愉快。

    谢谢!我会实施它并让你知道!
    // 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 :(
    }