javascript - 带参数的递归javascript函数?

标签 javascript function recursion

我得到了这个 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);
}

现在的问题是第一次运行得很好,但是 10 秒后再次尝试时,它显示错误:

TypeError: data[0] is undefined in drawChart(data, data[0][0], data[0][1]);

为什么会发生这种情况?

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

浏览器崩溃。

谢谢。

最佳答案

我想你想要的是这样的:

setTimeout(function() { 
    doStuff(graphName); 
}, 10000);
<小时/>

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

关于javascript - 带参数的递归javascript函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283305/

相关文章:

java - 如何管理递归函数?

scala - 有没有办法调用 Scala 中使用 `val` 定义的函数,并将整个花括号 block 作为参数而不是该 block 的最终结果?

javascript - 在深层嵌套对象中按特定键查找对象 | JavaScript

java - 递归:解决进口迷宫?

recursion - Graphviz (xdot) : How to make recursive nodes?

JavaScript 箭头函数理解

javascript - Meteor 中的外部依赖项(如 Bootstrap )

javascript - 连接javascript中的两个变量不是工作对象

c# - jquery如何从这个数组中获取数据

javascript - 使用 gmail api 发送电子邮件错误 : This API does not support parsing form-encoded input