2014-01-10 2 views
1

Я работаю с каркасом Backbone.js, где я использую dot net Web API (который создан только мной). Я называю контроллер API из метода выборки магистрали. Если этот api не отвечает в течение 30 секунд, я хочу показать сообщение об ошибке. Где я должен установить этот период времени и как?Как установить тайм-аут глобально для каждого вызова ajax в приложении Backbone.js?

ответ

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()), но, вероятно, можно повторить его без этой зависимости довольно легко

 Смежные вопросы

  • Нет связанных вопросов^_^