我有一個相當大的Backbone.js項目,所以我期望延遲加載儘可能多的資源。使用jQuery解決許多Backbone依賴關係延遲對象
考慮需要加載它自己的模板,子視圖的一些模板和集合的視圖。 (我不希望有等待每異步依賴於請求在下單前解決。)這將是有益的,如果我可以做類似...
initialize: function() {
$.when([
Handlebars.get('Template1', callback), // callback sets this.template
Handlebars.get('Template2', callback), // callback sets subview template
App.Store.get('MessageCollection', callback) // callback sets this.collection
]).then($.proxy(this.render, this)); // render
}
凡get
功能有一些幫手我建立的一個服務了資源,如果它在緩存/存儲存在,否則它會返回延期對象...
return $.ajax(...)
因此,這些get
傭工需要返回一個jQuery Deferred對象不管是什麼。在緩存/存儲中找到資源時,是否有任何問題返回已解析的延遲對象?
App.Store.get = function(resource, callback) {
if (resource exists) {
return $.Deferred().done(callback).resolve();
} else {
var model = new App.Model;
return model.fetch();
}
}
這會導致任何問題嗎?有一個更好的方法嗎?
不,這沒什麼錯。但是,如果將實際的延遲對象存儲在緩存中,則只需返回舊的已解析延遲對象,而不是創建新的對象。 –
聽起來不錯。 –
我想過,但我需要'deferred.reject()。done(callback).resolve()'。覺得會有什麼表現收益? –