Ily*_*hov 6 jquery backbone.js
是否有更性感的方式做到以下几点:
scheduleSubjects.fetch({
success: function(){
subjectList.fetch({
success: function(){
assignments.fetch({
success: function(){
_this.render();
}
});
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我希望在开始操作之前检索所有数据.
谢谢.
使用JQuery的延迟对象,您可以使用$.when在多个异步调用完成时触发回调:
$.when(scheduleSubjects.fetch(), subjectList.fetch(), assignments.fetch()).then(_this.render);
Run Code Online (Sandbox Code Playgroud)
请注意,这是有效的,因为它JQuery.ajax也会Backbone.fetch返回一个延迟对象.
替代.thenis .done,它会传递原始回调的参数(在OP中不需要,但在某些情况下可能会这样):
$.when(scheduleSubjects.fetch(), subjectList.fetch(), assignments.fetch())
.done(function(scheduleSubjects, subjectList, assignments) {
_this.render();
})
);
Run Code Online (Sandbox Code Playgroud)
var collections = [scheduleSubjects, subjectList, assignments];
var complete = _.invoke(collections, 'fetch');
$.when(null, complete).then(function(){
_this.render();
});
Run Code Online (Sandbox Code Playgroud)
使用Promises和Underscore _.invoke()!