着名的发射/订阅模式与管道

时间:2014-05-23 11:33:10

标签: javascript famo.us

可以使用这两种方法,以便一个事件处理程序可以侦听来自另一个事件处理程序的事件的触发。文档说它们是相同的,只是不同的实现。我想知道为什么框架困扰为同一个任务提供两种不同的方法?可能pipe()更适合链接,但我想知道使用pipe()优于emit()/subscribe()是否还有其他隐藏优势

1 个答案:

答案 0 :(得分:2)

如果您执行widgetA.pipe(widgetB),则widgetA的所有事件都会发送到widgetB,无论widgetB是否正在收听这些事件。 Pipe就像一个消防员。

另一方面,

Subscribe更高效。 WidgetB.subscribe(widgetA)说你发出的东西,我想订阅一个特定的子集。"然后完全忽略其他事件。

在与DOM交互时尤为重要,DOM会输出大量事件(mousedown,mouseup,touchmove,resize等等),并且在收听时使用Subscribe是首选到DOM元素。