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

我在我的一个项目中使用主干网,与外部API的通信集成。我想使用实时更新记录。由于我无法访问此外部应用程序的主后端,而且它们既不提供websocket服务器,也不提供长轮询端点,因此我基本上可以选择使用setInterval进行常规轮询,轮询周期为50秒。它一直运行得很好。我的问题是edge案例。如果由于某种原因API请求挂起超过50秒,比方说,我将立即触发一个新的请求。这就是说,现在有两个挂起的请求,最终会加起来。有没有办法为请求设置超时?我知道所有请求都指向Backbone.sync,但我检查了源代码,没有找到任何可行的方法来设置XmlHttpRequest的超时。有没有一种方法可以干净地执行此操作而不覆盖行为?或者是否有其他解决方案/变通方法

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

collection.fetch({timeout:50000});

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

$.ajaxSetup({超时:50000});

发表评论