私はかなり大きな 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();
}
}
これは何か問題を引き起こしますか?これを行うより良い方法はありますか?