これが私が持っているコードです:
var criterion = _.extends({},Base);
criterion.dispatcher.on('save',this.saveIt,this); //respond to event save.
criterion.saveIt = function(){
if(this.hasChanged())
this.save({success:this.saveSuccess, error:this.saveError}); //method in Base
else
dispatcher.trigger('done');
};
criterion.saveSuccess = function() {
//do something
dispatcher.trigger('done');
};
criterion.saveError = function() {
//do something
dispatcher.trigger('done');
};
dispatcher.trigger('done')
for ajax 固有の項目で終わる関数がかなりあります。これは、Web アプリのプログレス バーを更新するために使用されdone
ます。すべての要素からイベントを受信した後、成功またはエラー、または既に新しい状態になったときにカウント ダウンします。カウンターは決定論的であるため、アイテムの数によってカウントアップし、done
受信した の数によってカウントダウンします。
質問:dispatcher.trigger('done')
各関数の最後に繰り返される呼び出しを削除するより良い方法はありますか? それとも必要悪か。いわば「次のステップ」の実行を同期するためだけに、さまざまなオブジェクトにそのようなコードがあります(「同期バリア」と考えてください)。