Rob*_*ert 13 javascript recursion settimeout
假设我每隔10秒就需要从服务器获取一些数据.我将有一个函数通过AJAX获取数据,然后调用setTimeout再次调用此函数:
function GetData(){
$.ajax({
url: "data.json",
dataType: "json",
success: function(data){
// do somthing with the data
setTimeout(GetData, 10000);
},
error: function(){
setTimeout(GetData, 10000);
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果有人让网页全天开放,它可能会有数千个递归函数调用.
我不想使用setInterval,因为它没有考虑网络延迟.如果网络繁忙并且处理请求需要15秒,我不想在获得AJAX超时之前再次询问它.
处理需要定期调用的函数的最佳方法是什么?
lau*_*ent 24
没有实际的递归,因为在此期间对GetData的调用被延迟并且JavaScript上下文被销毁.所以它不会崩溃JS引擎.
对于您的代码示例,这基本上是JS引擎级别会发生的事情: