我得到了这个 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/