use*_*171 3 ajax jquery long-polling
我正在考虑对网站上的“通知”系统进行长时间轮询。我以前从未这样做过,因此我正在网上寻找有关它的信息。我正在看这里:http ://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
在关于长轮询的部分中,它说:“超时:为请求设置超时(以毫秒为单位)。超时时间从进行 $.ajax 调用时开始。这里,我们将超时设置为 30 秒。这意味着在 ajax 调用完成并且(至少)三十 (30) 秒过去之前,我们的 poll 函数不会再次被调用。”
说 poll 不会被调用,直到 ajax 调用完成并且至少过去了 30 秒。
当我将其添加到 Javascript 中时,poll 会在 ajax 调用完成时被一遍又一遍地调用。它不会等待 30 秒。
(function poll() {
$.ajax({ url: "/myapp/messages/messages/checkMessages", success:
function(data){alert("YO");}, complete: poll, timeout: 30000 });
})();
Run Code Online (Sandbox Code Playgroud)
我是否做错了什么,或者这就是轮询的工作时间?
另外,这样有效率吗?这会随着网站流量而扩展吗?
谢谢您的帮助!
(function poll(){
setTimeout(function(){
$.ajax({ url: "/myapp/messages/messages/checkMessages", success: function(data){
console.log("Polling!");
}, complete: poll, timeout: 30000});
}, 30000);
})();
Run Code Online (Sandbox Code Playgroud)
设置呼叫超时$.ajax只会设置呼叫的最大超时时间。
即,如果第一次调用$.ajax未在超时时间内完成,则将再次调用 poll。否则,如果调用完成,poll将再次调用。poll如果在超时时间之前完成,这将导致重复调用。
下面将其包装poll在 setTimeout 中,停止poll重复调用自身(正如您上面所做的那样)
(function poll(){
setTimeout(function(){
$.ajax({ url: "/myapp/messages/messages/checkMessages", success: function(data){
console.log("Polling!");
}, complete: poll, timeout: 30000});
}, 30000);
})();
Run Code Online (Sandbox Code Playgroud)
*注意:我为任何寻求更清晰的人添加了答案。
| 归档时间: |
|
| 查看次数: |
5445 次 |
| 最近记录: |