在阅读一篇关于长轮询的文章时,我对以下两种风格的内容感到困惑setInterval
1 -
setInterval(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json"});
}, 30000);
Run Code Online (Sandbox Code Playgroud)
2-
(function poll() {
setTimeout(function() {
$.ajax({ url: "server", success: function(data) {
sales.setValue(data.value);
}, dataType: "json", complete: poll });
}, 30000);
})();
Run Code Online (Sandbox Code Playgroud)
根据博客,它说 - 关于第二个片段,
因此,这种模式并不能保证在固定的时间间隔内执行.但是,它确保在调用下一个间隔之前完成前一个间隔.
为什么第二个片段保证前一个间隔已经完成?
我知道第一个(事件循环)但很少混淆第二个片段.
为什么第二个片段保证前一个间隔已经完成?
首先,$.ajax()无论之前的$.ajax()调用是否完成,都会每隔一段时间调用一个示例。
在第二个示例中,直到的函数poll才被再次调用。complete$.ajax()
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |