12

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

4

1 回答 1

22

只需将参数timeout:milliseconds中的一个选项传递给. 选项直接传递给jQuery.ajax,它处理低级 XHR 调用:optionsfetch

 collection.fetch({timeout:50000});

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

$.ajaxSetup({timeout:50000});
于 2013-01-18T18:49:15.250 回答