有没有更好的方法来创建异步更新而不使用setInterval?
我有我的网站的多个部分,每半秒检查一次更新,所以它可以提醒你消息等。但是我觉得使用带有setInterval的$ .post可能在网站上有点沉重。 是否有更好的建议用于这些任务的替代方法?
如果你正在使用nodeJS, socket.io将是你要走的路 。 否则,检查这个jQuery插件 ,它实现了优雅的降级,即使不像socket.io那样全面。
是的,虽然这不是微不足道的。
更好的方法
您可以使用长轮询(或“彗星”),它打开一个连接,保持打开20秒左右,然后立即重新打开它。 服务器可以随时发送内容。
较新的浏览器提供websockets,提供持久连接。
两者都是相对复杂的代码,所以你需要某种框架来为你处理事情。 此外,需要为每个用户保持连接,因此它只适用于像NodeJS这样轻量级的东西。
更简单的方法
如果你想要更容易实现的东西,我建议你按照你的建议检查更新(它被称为短轮询以与长轮询/ websockets进行对比)。 你可以这样做一个简单的轮询解决方案:
window.setInterval(function () { // More lightweight than $.post $.get('/datasource', function () { /* do something */ }); }, 3000);
之前已经使用了 3秒间隔的高调人士 。
如果事情变慢,请尝试在/ datasource中分析数据库查询