可以使用这两种方法,以便一个事件处理程序可以侦听来自另一事件处理程序的事件触发。文档说它们是同一件事,只是实现方式不同。我想知道为什么框架要为同一任务提供两种不同的方法? 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/

10-16 00:09