1
以下のコードブロックでは、remoteAPIObj
へのinitialize1
とinitialize2
の呼び出しが両方とも終了していることを確認する必要があります。どちらの関数もAJAXクエリを実行しており、与えられたコールバック関数を実行します。レンダリング前にコールバックまで待機する
だから私は別の関数renderOnce
を定義し、renderOnce
を確認する機能after
underscore.js使用していたが、実際に実際に実行される前に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();
})
});
$ .whenがinitialize1と2の両方のコールバックが実行されるまで待たずに済むように、私はそれらを内部で操作しなければならないと思います。 – osoner
あなたがそれを遅延オブジェクトにすると、それが両方を待つことを確かめてください。いくつかのテスト用Ajaxコードで試してみるのは簡単です。 – JohnP
initialize1とinitialize2の中にreturn $ .ajax({...})を使用すると、$が実際に作った – osoner