我们是否需要设置超时进行短轮询
Do we need setTimeout for short polling?
如果我想实现这样的短轮询:
function firstCall(){
$.ajax({
...
success: function(response){
if (response.OK == "OK"){
secondCall();
}else{
firstCall();
}
}
});
}
这就够了吗? 还是我真的需要用 setTimeout
将 else 中的firstCall()
子句括起来?谢谢
我建议您使用一点超时,因为现在您正在为服务器创建大量流量。Ajax速度很快,success
会经常被执行。
所以我建议你使用 setTimeout 或 setInterval!
此解决方案依赖于第一次调用才能成功。 如果您的代码在任何时候没有"成功"(也许是服务器打嗝?),您的"轮询"将停止,直到页面刷新。
可以使用 setInterval
按定义的时间间隔调用该方法,从而避免此问题:
setInterval(function(){
$.ajax({}); // Your ajax here
}, 1000);
使用这两种解决方案,您的服务器将处理许多可能不需要的请求。 您可以使用像 PollJS(无耻的自插拔)这样的库来增加延迟,这将提高性能并减少带宽:
// Start a poller
Poll.start({
name: "example_poller",
interval: 1000,
increment: 200,
action: function(){
$.ajax({}); // Your ajax here
}
});
// If you want to stop it, just use the name
Poll.stop("example_poller");
如果要减少对服务器的请求,则需要setTimeout()
如果您不想等待用户操作或 ajax 响应在特定时间后触发事件,则需要设置 Timeout,否则您可能会等待 ajax 调用成功或错误事件。
相关文章:
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 是否从超时内开始间隔是一个问题
- 我们是否需要设置超时进行短轮询
- 如何检测对象是否为间隔/超时
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 是否可以在 js 中为单元测试超时
- 是否有JQuery或Javascript警告消息实用程序,可以在不干扰用户的情况下显示和超时
- 是否需要在运行后清除超时或最佳做法
- 一旦超时执行,清除或重新分配分配给 setTimeout 返回值的变量是否有任何技术点
- 检查超时是否正在等待运行
- 检查Javascript中是否存在活动超时
- 超时0是否总是足够长
- 有没有办法在javascript中查看变量是否分配了超时
- 确定/规避AJAX请求是否超时的方法
- 检查节点生成进程是否超时
- 当XMLHttpRequest处于“pending”状态时;状态(在Chrome中)是否将该时间计入它的超时时间
- 超时/间隔id是否被回收?
- 是否重置超时
- 是否在会话超时后插入用户注销信息
- 是否可以通过设置超时来延迟for循环中的变量?