setInterval()有什么选项吗?

时间:2016-02-12 10:29:45

标签: javascript jquery

我在一段时间后连续读取文件

setInterval(function(){
    $.getJSON("json/someFile.json", function(data){
        // Some code
    });
}, 5000);

我在延迟后不断阅读此文件,因为它在代码的其他部分得到更新。我想避免使用setInterval()。

有没有什么方法可以让我知道文件已更新,只有在更新时才能阅读。

2 个答案:

答案 0 :(得分:2)

我假设你在谈论客户端代码。然后否:没有办法“观看”json文件,就像你可以在“常规”应用程序中拥有一个文件观察器。你需要:

  • 您正在进行的基于时间间隔的检查。但是,正如@George的评论中所建议的那样,如果您使用setTimeout并且仅在特定情况下重新启动Ajax请求(例如成功,可能),您可能会更好);使用您当前的方法,该函数可以在该间隔上运行,但如果它需要比间隔时间更长的响应,则会得到请求的累积;
  • Websockets(可能会回退到长轮询之类的东西),可能使用另一个库+此解决方案的服务器端部分;

别害怕。

作为一个脚注,这与jQuery没什么关系。首先,setInterval不是jQuery而是常规window函数,其次,“观看”文件的问题并非特定于你正在做什么 Ajax调用(你正在使用jQuery,但你也可以使用另一个lib)。

答案 1 :(得分:2)

首先,setInterval是一种原生JavaScript方法。它不是来自jQuery。其次,你所做的就是所谓的民意调查。这意味着您定期请求某些信息以使其保持最新。另一种方法是使用WebSockets。 Websockets是客户端和服务器之间的双向连接,可以同时推送和接收消息。这样,只要在后端更新文件,就可以向客户端发送套接字消息。