这是我拥有的代码:
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 特定项目结尾的函数。done
这用于更新网络应用程序上的进度条 - 它在从每个元素接收到成功或错误或已经处于新状态的事件后倒计时。由于计数器是确定性的,它按项目数向上计数,并按done
接收到的 s 数向下计数。
问题:有没有更好的方法来删除dispatcher.trigger('done')
每个函数末尾的重复调用?或者它是一种必要的邪恶。我们在各种对象中都有这样的代码,可以说是为了同步“下一步”的执行(将其视为“同步屏障”)。