这两种方法都可以使用,以便一个事件处理程序可以监听另一个事件处理程序的事件触发。文档说它们是同一件事,只是实现不同。我想知道为什么框架要为同一任务提供两种不同的方法?可能 pipe()
更适合链接,但我想知道使用 pipe()
相对于 emit()/subscribe( 是否还有其他隐藏的优势)
最佳答案
如果您执行widgetA.pipe(widgetB)
,则来自widgetA
的所有事件都会发送到widgetB
,无论widgetB
是否code> 正在听他们说话。 Pipe
就像消防水带。
Subscribe
的性能更高。 WidgetB.subscribe(widgetA)
表示“在您发出的内容中,我想订阅特定的子集。”其他事件将被完全忽略。
这在与 DOM 交互时尤其重要,因为 DOM 会输出大量事件(mousedown、mouseup、touchmove、resize 等...),并且在监听时最好使用 Subscribe
一个 DOM 元素。
关于javascript - Famous 中的发出/订阅模式与管道模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828119/