Pub / Sub中的Publisher应该是同步还是异步?

时间:2015-06-17 11:40:42

标签: javascript design-patterns javascript-events anti-patterns

我对机制的看法:

  • 模式明智的发布者应该只发布一个事件,而不应该关心该主题/事件的侦听器/订阅者。
  • 在JavaScript的情况下,Pub / Sub的许多框架以同步方式发布事件
  • 例如:框架只维护事件的映射到功能。
  • 在特定事件发生时,它迭代订阅者并逐个调用函数 - > function_1.apply(context,args)然后是function_2.apply(context,args)
  • 这使得它同步为,除非并且直到function_1完成,否则function_2不知道发生了特定事件。

在JavaScript中实现Pub / Sub的理想方式是什么?

1 个答案:

答案 0 :(得分:2)

我在我的发布方法中添加了一个“enqueue”参数,当truthy将实际发布包装在setTimeout(...,0)中时,发布者可以选择立即触发处理,或者将其排入JavaScript执行队列,允许首先完成当前执行路径。

如果要维护自己的订阅者列表,则可以让subscribe方法将enqueue标志实现为订阅的属性。因此,发布者可以根据订阅中指示的偏好将个人订阅者排队。