带参数的递归javascript函数?

msq*_*qar 0 javascript recursion function

我有这个javascript递归函数:

function doStuff(graphName) {
    var groupArray = new Array();
    groupArray[0] = "hour";
    groupArray[1] = "day";
    groupArray[2] = "month";
    for(var i = 0; i < groupArray.length; i++) {
        $.get("getchartdata", {"graphName" : graphName, "subgroup" : groupArray[i]})
              .done(function(jsonData){
                  var data = eval(jsonData);
                  drawChart(data, data[0][0], data[0][1]);
              });

    }
    setTimeout(doStuff, 10000);
}
Run Code Online (Sandbox Code Playgroud)

现在问题是它第一次工作得很好,但是再次尝试10秒后,它显示一个错误:

TypeError: data[0] is undefined in drawChart(data, data[0][0], data[0][1]);
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

如果我在中添加参数 setTimeout(doStuff(graphName), 10000);

浏览器崩溃了.

谢谢.

mus*_*fan 8

我想你想要的是这个:

setTimeout(function() { 
    doStuff(graphName); 
}, 10000);
Run Code Online (Sandbox Code Playgroud)

值得注意的是,如果您的AJAX调用需要10秒以上才能完成,您可能会开始看到一些"故障".也许考虑将超时移动到.done回调内部(这意味着它在ajax完成后 10秒再次运行).但是,这只是一个建议,如果这不符合您的需求,那么您可以保持原样.此外,这可能不适合,因为你在一个for循环中调用ajax ,如果你没有正确实现它,你可能会得到比你想要的更多的超时