假设我每隔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超时之前再次询问它.
处理需要定期调用的函数的最佳方法是什么?
从技术上讲,当我们执行以下代码(recursive process.nexttick)时,CPU使用率将达到100%或接近.问题是想象我在一台带有一个CPU的机器上运行,并且还有另一个节点HTTP服务器工作的过程,它如何影响它?
该线程是否正在进行递归process.nexttick让HTTP服务器工作?
如果我们有两个递归process.nexttick的线程,他们都获得50%的份额?
由于我不知道任何一个核心的机器都无法尝试.而且由于我对线程之间CPU的时间共享的理解在这种情况下是有限的,我不应该如何尝试使用具有4核CPU的机器.
function interval(){
process.nextTick(function(){
someSmallSyncCode();
interval();
})
}
Run Code Online (Sandbox Code Playgroud)
谢谢