1
這裏是我的代碼:如何在JavaScript中通過多個方法重構這組重複的觸發器調用?
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')
結束對AJAX的具體項目的一些功能。這用於更新Web應用程序上的進度條 - 在成功或錯誤或已處於新狀態時從每個元素接收到done
事件後,它會倒計時。由於計數器是確定性的,因此它計數的項目數量減少了收到的數量done
。
問題:有沒有更好的方法來刪除每個函數結束時重複調用dispatcher.trigger('done')
?或者這是一個必要的罪惡。我們在各種對象中都有這樣的代碼,只是爲了同步「下一步」的執行(可以說是「同步障礙」)。
非常符合這些方面。我希望以某種方式包裝類似於AOP的電話,以擺脫記住觸發器的記憶。我猜如果是參數,它會是'method.call(this,arguments)'正確嗎? – PhD 2012-08-09 19:42:03
@PDD我相信如此。 – dqhendricks 2012-08-09 19:45:48