Backbone.js在渲染之前等待回调
Backbone.js wait until callback before rendering
在下面的代码块中,在呈现视图之前,我需要确保对remoteAPIObj
的initialize1
和initialize2
调用都已完成。这两个函数都在执行AJAX查询并执行给定的回调函数。
因此,我定义了另一个函数renderOnce
,并使用undercore.js函数after
来确保renderOnce
在实际执行之前被实际调用了2次。这种方法缺少什么吗?或者你还有其他建议吗?
window.MyView = Backbone.View.extend({
el: $('#right-container'),
render: function(eventName) {
var template = Handlebars.compile($("#right-template").html());
$(this.el).html(template(remoteAPIObj.getData()));
return this;
},
initialize: _.once(function() {
var self = this;
remoteAPIObj.initialize1(function(){self.renderOnce();});
remoteAPIObj.initialize2(function(){self.renderOnce();});
}),
renderOnce: _.after(2, function() {
this.render();
})
});
使用jQuery promise方法实现这一点的理想方法-http://api.jquery.com/jQuery.when/
示例:
$.when( $.ajax("test.aspx") ).then(function(ajaxArgs){
alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});
如果你的内部代码可以适应承诺,你可以做这样的
$.when(remoteAPIObj.initialize1, remoteAPIObj.initialize2).then(function(args1, args2){
this.render();
});
否则,还可以使用事件系统触发一个事件,通知渲染方法数据可用。但这与你已经在做的事情没有太大的不同。
相关文章:
- 等待回调函数执行
- 如何使for循环等待回调返回值
- POST 响应未等待回调完成
- 节点.js如果我使用 process.send(),请等待回调/响应
- 如何使函数等待回调完成
- Javascript/jQuery使函数等待回调后再继续
- 等待回调将在FOR循环中返回一个值
- 如何等待回调函数的返回
- angularjs-$http正在读取json并等待回调
- node.js等待回调完成
- Backbone.js在渲染之前等待回调
- 等待回调
- Jquery动画没有等待回调
- Jquery,绑定顺序/等待回调
- 等待回调完成Node.js
- 等待回调函数的结果之前,另一个回调函数
- iOS SQLite Phone Gap db事务不等待回调
- JS在循环中等待回调完成
- JS:等待回调完成的优雅方式
- 如何使循环等待回调成功