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);
浏览器崩溃了.
谢谢.
我想你想要的是这个:
setTimeout(function() {
doStuff(graphName);
}, 10000);
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果您的AJAX调用需要10秒以上才能完成,您可能会开始看到一些"故障".也许考虑将超时移动到.done回调内部(这意味着它在ajax完成后 10秒再次运行).但是,这只是一个建议,如果这不符合您的需求,那么您可以保持原样.此外,这可能不适合,因为你在一个for循环中调用ajax ,如果你没有正确实现它,你可能会得到比你想要的更多的超时