Backbone.js:为Backbone.sync实现定义超时

时间:2013-01-18 17:23:37

标签: ajax backbone.js real-time polling

我在我的项目中使用骨干,与外部API的通信集成。我想使用记录的实时更新。由于我无法访问此外部应用程序的主后端,并且它们既不提供websocket服务器也不提供长轮询端点,所以我基本上可以选择使用setInterval进行常规轮询,并且周期为50秒。它一直运作良好。我的问题是边缘情况。如果出于某种原因,API请求会挂起,超过50秒,我想说,我将立即触发新请求。这意味着,现在有2个挂起请求,最终会加起来。有没有办法为请求设置超时?我知道所有请求都导致Backbone.sync,但我正在检查源代码,我没有看到任何可行的方法来设置XmlHttpRequest的超时。有没有办法干净地完成这项工作而不会覆盖行为?或者还有其他解决方案/解决方法吗?

1 个答案:

答案 0 :(得分:22)

只需将timeout:milliseconds参数中的options选项传递给fetch即可。这些选项直接传递给jQuery.ajax,它处理低级XHR调用:

 collection.fetch({timeout:50000});

或者,您可以通过在应用程序启动中调用jQuery.ajaxSetup来为应用程序发出的所有请求设置全局超时:

$.ajaxSetup({timeout:50000});