我有一个相当大的 Backbone.js 项目,所以我希望延迟加载尽可能多的资源。
考虑一个需要加载它自己的模板、一些子视图模板和一个集合的视图。(我不想在请求下一个之前等待每个异步依赖解决。)如果我能做类似的事情会很有帮助......
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 延迟对象。在缓存/存储中找到资源时返回已解决的延迟对象是否有任何问题?
App.Store.get = function(resource, callback) {
if (resource exists) {
return $.Deferred().done(callback).resolve();
} else {
var model = new App.Model;
return model.fetch();
}
}
这会引起任何问题吗?有一个更好的方法吗?