业精于勤,荒于嬉;行成于思,毁于随。
EventEmitter 解决的问题就是时间的发布者不需要关心谁监听这个事件,事件的监听者也不关心谁发出这个事件,只要它们在同一个 EventEmitter 对象上进行 emit 和 on 即可。这样的设计会显著地减少事件的发布者和监听者之间的联系,从而降低复杂度。
当你的事件发送方和消费方都在同一个模块中,不需要通知其它模块或其它模块也关心其中的事件时,用callback就可以把事件发送/监听的事做完了
而使用EventEmitter的目的在于减少模块之间的耦合度模块之间关注EventEmitter而不是去关注事件是由哪个模块发送出来的;同时发送Event的模块也不关心我发出的事件有没有响应,有没有模块需要这个事件,这就能做到模块的职责明确,每个模块只处理自己该完成的工作
如果简单的execute callback的话,那么发送事件/产生事件的一方必须知道我要把事件发给谁,调用哪个模块的callback。而每当有一个新的模块需要这个事件通知时,必须在发送事件方修改,而消费事件方并不能做什么
EventEmitter 解决的问题就是时间的发布者不需要关心谁监听这个事件,事件的监听者也不关心谁发出这个事件,只要它们在同一个 EventEmitter 对象上进行 emit 和 on 即可。这样的设计会显著地减少事件的发布者和监听者之间的联系,从而降低复杂度。
当你的事件发送方和消费方都在同一个模块中,不需要通知其它模块或其它模块也关心其中的事件时,用callback就可以把事件发送/监听的事做完了
而使用EventEmitter的目的在于减少模块之间的耦合度
模块之间关注EventEmitter而不是去关注事件是由哪个模块发送出来的;同时发送Event的模块也不关心我发出的事件有没有响应,有没有模块需要这个事件,这就能做到模块的职责明确,每个模块只处理自己该完成的工作
如果简单的execute callback的话,那么发送事件/产生事件的一方必须知道我要把事件发给谁,调用哪个模块的callback。而每当有一个新的模块需要这个事件通知时,必须在发送事件方修改,而消费事件方并不能做什么