有没有更好的方法来创建异步更新而不使用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中分析数据库查询