我目前正在创建一个Backbone.js和jquery Mobile Web应用程序,我对Backbone.model.fetch()进行了一些调用。 我有正确的成功和错误回调,但是无论fetch是否成功,都有一些我想要执行的代码。
目前,我只是复制公共代码。但是我问自己,无论发生什么事情,都会有任何回调被执行。
就像C#中的try {} catch {} finally {}一样。 有什么类似的吗?
答案 0 :(得分:3)
fetch()返回'Deferred Object' 见:http://api.jquery.com/category/deferred-object/
它不像try {} catch {},但你可以使用.always()方法绑定一个回调,该回调将在请求完成后执行(无论是否成功)
像这样。 var doSomething = function () {
//will run after fetch() request is finished
};
collection.fetch().always(doSomething);
类似地,不是将success
或error
回调传递给fetch()的选项,而是鼓励链接.done(),. fail()或.then()延迟方法的方法(获取,保存......等)