可以使用这两种方法,以便一个事件处理程序可以侦听来自另一个事件处理程序的事件触发。文档说它们是一样的,只是实现不同。我想知道为什么框架要为同样的任务提供两种不同的方法?可能pipe()
更适合链接,但我想知道使用pipe()
是否有任何其他隐藏的优势,而不是emit()/subscribe()
如果您执行widgetA.pipe(widgetB)
,则来自widgetA
的所有事件都被发送到widgetB
,无论widgetB
是否正在侦听它们。Pipe
就像一根消防水管。
Subscribe
的性能更高。WidgetB.subscribe(widgetA)
说:"在你发出的东西中,我想订阅一个特定的子集。"其他事件则被完全忽略。
这在与DOM交互时尤其重要,DOM会输出大量事件(mousedown, mouseup, touchmove, resize等),并且在监听DOM元素时首选使用Subscribe
。