如何为 Backbone 中的每个 ajax 调用全局设置超时.js



我正在使用一个Backbone.js框架,其中我使用的是dot net Web API(仅由我创建)。我从骨干的获取方法调用 API 控制器。如果此 api 在 30 秒内没有响应,我想显示一些错误消息。我应该在哪里设置此超时期限以及如何设置?

默认情况下,Backbone 使用 jQuery.ajax 发出请求,这意味着您可以使用 jQuery.ajaxSetup 设置默认值。在您的情况下,您将设置超时选项:

超时
设置请求的超时(以毫秒为单位)。

尝试

$.ajaxSetup({
    timeout: 30000
});

您可以手动设置所有获取和保存调用的超时,如下所示:

MyModelInstance.fetch({
    timeout: 6000
});

但是,如果您希望全局使用特定的超时,则更简单的做法是在首次加载 Backbone 时包装 Backbone.sync 方法。 试试这个:

//Set the default options for all our sync calls - in this case, we're only messing with the timeout
var syncDefaultOptions = {
    timeout: 8000
};
//Save a copy of the default Backbone.sync function
var sync = Backbone.sync;
//Wrap the default Backbone.sync function with one that automatically applies our default options, but still allows them to be overwritten manually
Backbone.sync = function(method, model, options) {
    options = _.defaults(options || {}, syncDefaultOptions);
    sync(method, model, options);
};

请注意,上面的代码依赖于 lodash ( _.defaults() ),但您可能很容易在没有该依赖项的情况下复制它

相关内容

  • 没有找到相关文章

最新更新