javascript - 使用 jQuery Deferred 对象解决许多 Backbone 依赖关系

标签 javascript jquery backbone.js

我有一个相当大的 Backbone.js 项目,所以我希望延迟加载尽可能多的资源。

考虑一个 View 需要加载它自己的模板、一些 subview 模板和一个集合。 (我不想在请求下一个之前必须等待每个异步依赖项都解决。)如果我能做类似的事情会很有帮助......

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();
  }
}

这会导致任何问题吗?有一个更好的方法吗?

最佳答案

通常,您的方法应该按原样工作。 你可以使用 jquery.whenall插件以便并行等待多个请求。

但如果项目实际上比加载几个模板更复杂,您可能应该查看一些 AMD 解决方案,例如 require.js

关于javascript - 使用 jQuery Deferred 对象解决许多 Backbone 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026348/

相关文章:

javascript - jquery - 找到整数或空格时拆分(即拆分类(class)代码)

javascript - ExtJS视口(viewport)产生空白页面

JavaScript:创建文本框数组

php - Jquery POST 在 keyup 上获取数据

javascript - 任何页面更改事件上的 Backbone 路由器

javascript - 如何从包含四个属性的 JSON 对象创建包含两个属性的 JSON 对象

javascript - 使用 jquery 为多个元素制作交错的淡入淡出循环

javascript - Jquery - 由于类(class)发生变化,双击时遇到麻烦

javascript - IgnoreCasebackbone.js 集合?

javascript - Backbone Js 应用程序未渲染 View