【发布时间】:2013-01-03 15:56:05
【问题描述】:
我正在开发一个 Backbone 应用程序,并且复杂性正在增加。副作用之一是有时页面的初始加载速度很慢。我已经将此问题追溯到 AJAX 请求等待。
在我当前的一些路线中,我提出了 4 个单独的请求。有些是重要的,例如加载模板。因此,我使用 jQuery ajax 请求中的 done() 函数来传递继续加载页面的回调。
有时我需要一个无关紧要的小元素的数据。例如,加载最后 5 篇博文的请求。 现在我的想法是,我想尽快发出请求,而不会停止其余路由的执行,我想知道它什么时候准备好。
这是我的建议
var myModel = new Posts(); //instantiate the model
myModel.dfd = myModel.fetch();
然后在处理最后一个帖子元素的子视图中具有将模型传递给的方法并执行类似的操作
render : function() {
var self = this;
this.model.dfd.done(function( ) {
this.html( template( self.model.toJSON() );
}
}
这个想法是,如果请求已经完成,它将立即执行,如果没有,它将等待。但至少我从节省时间中受益,直到它达到这一点。
这是个好主意吗?
【问题讨论】:
-
能否包含初始化视图并调用
render()方法的代码? -
“这是个好主意吗?”。你告诉我们。有用吗?
-
@Beetroot-Beetroot 是的,它工作正常。但还不确定我获得了多少性能优势。
-
如果你想要好的页面加载分析,那么试试 Opera 的 Dragonfly。 FF 的 Firebug 也可以这样做;我不确定,因为我不使用 FF。
标签: jquery backbone.js jquery-deferred