2

私はかなり大きな 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();
  }
}

これは何か問題を引き起こしますか?これを行うより良い方法はありますか?

4

2 に答える 2