可以使用这两种方法,以便一个事件处理程序可以侦听来自另一事件处理程序的事件触发。文档说它们是同一件事,只是实现方式不同。我想知道为什么框架要为同一任务提供两种不同的方法? pipe()
可能更适合链接,但是我想知道使用pipe()
而不是emit()/subscribe()
是否还有其他隐藏的优势
最佳答案
如果执行widgetA.pipe(widgetB)
,则来自widgetA
的所有事件都将发送到widgetB
,而不管widgetB
是否在监听它们。 Pipe
就像一个消防水带。
另一方面,Subscribe
表现更好。 WidgetB.subscribe(widgetA)
说:“关于您发出的内容,我想订阅特定的子集。”然后,其他事件将被完全忽略。
与DOM交互时,这尤其重要,它会输出许多事件(鼠标按下,鼠标向上移动,触摸移动,调整大小等),并且在侦听DOM元素时首选使用Subscribe
。
关于javascript - 发射/订阅模式与著名中的管道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23828119/