Я работаю с каркасом Backbone.js, где я использую dot net Web API (который создан только мной). Я называю контроллер API из метода выборки магистрали. Если этот api не отвечает в течение 30 секунд, я хочу показать сообщение об ошибке. Где я должен установить этот период времени и как?Как установить тайм-аут глобально для каждого вызова ajax в приложении Backbone.js?
1
A
ответ
1
По умолчанию Backbone использует jQuery.ajax
для выполнения своих запросов, что означает, что вы можете установить значения по умолчанию с помощью jQuery.ajaxSetup
. В вашем случае, вы должны установить timeout вариант:
таймаут
Установите тайм-аут (в миллисекундах) для запроса.
Попробуйте
$.ajaxSetup({
timeout: 30000
});
1
Можно просто вручную установить тайм-аут со всеми вашими извлекающих и сохранить вызовов, например, так:
MyModelInstance.fetch({
timeout: 6000
});
Если вы хотите определенный тайм-аут во всем мире, однако, проще всего обернуть метод Backbone.sync
, когда вы впервые загрузите Backbone. Попробуйте это:
//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()
), но, вероятно, можно повторить его без этой зависимости довольно легко