有没有更好的方法可以在不使用setInterval的情况下创建异步更新
Is there a better way to create asynchronous updates without using setInterval?
我的网站有多个部分,每半秒检查一次更新,这样它就可以提醒你消息等。然而,我觉得使用带有setInterval的$.post可能会对网站造成一些负担。对于这些任务,是否有更好的替代方法推荐?
是的,尽管这不是小事。
更好的方法
你可以使用长轮询(或"彗星"),它打开一个连接,保持它打开20秒左右,然后立即重新打开它。服务器可以随时发送一些东西。
较新的浏览器提供websocket,它提供持久连接。
两者的代码都相对复杂,因此您需要某种框架来处理问题。此外,连接需要为每个用户保持开放,所以它只适用于像NodeJS这样的轻量级。
更简单的方法
如果你想要更容易实现的东西,我建议按照你的建议检查更新(它被称为短轮询,以与长轮询/websockets形成对比)。你可以这样做一个简单的轮询解决方案:
window.setInterval(function () {
// More lightweight than $.post
$.get('/datasource', function () {
/* do something */
});
}, 3000);
3秒的间隔时间以前曾被知名人士使用过。
如果速度变慢,请尝试在/datasource 中分析数据库查询
socket.io将是使用nodeJS的方法。否则,请检查这个jQuery插件,它实现了优雅的降级,尽管不如socket.io.全面。
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在什么情况下浏览器拒绝继续调用 setInterval 回调
- 有没有更好的方法可以在不使用setInterval的情况下创建异步更新
- 如何在没有按钮的情况下停止javascript中的setinterval函数
- 如何在文本控件具有焦点的情况下激活setInterval()
- 如何在不知道其ID的情况下清除所有setInterval()和setTimeOut()
- 在这种情况下使用window.setTimeout()和window.setInterval()
- JS动画结束循环,希望在不使用的情况下连续循环;setInterval/setTimout
- 如何在不使用setInterval/timeout的情况下检查实时更新
- 如何在不刷新页面的情况下重复此代码?setInterval吗?其他