在阅读关于Long Polling的文章时,我对以下两种setInterval
1 -
setInterval(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json"});
}, 30000);
2-
(function poll() {
setTimeout(function() {
$.ajax({ url: "server", success: function(data) {
sales.setValue(data.value);
}, dataType: "json", complete: poll });
}, 30000);
})();
根据博客的说法 - 关于第二个片段,
因此,此模式不保证在固定的时间间隔内执行 SE。但是,确实保证了之前的间隔已经完成 在下一个间隔被称为之前。
为什么第二个片段保证前一个间隔已完成?
我知道第一个(事件循环),但对第二个片段感到困惑。
答案 0 :(得分:3)
为什么第二个片段保证前一个间隔已完成?
首先,以一段时间调用示例$.ajax()
,无论先前的$.ajax()
调用是否完成。
在poll
的{{1}}函数之前,第二个示例complete
不再被调用。