javascript - Pub/Sub 中的发布者应该是同步还是异步?

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

我对机制的看法:

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

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

最佳答案

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

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

关于javascript - Pub/Sub 中的发布者应该是同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30890550/

相关文章:

javascript - 使用 Okta API 的 Okta 登录小部件

javascript - JavaScript 扩展语法遇到问题

php - 单击链接时使用 jquery/ajax 发送/更新 div

design-patterns - 并行实现树遍历算法的策略?

c++ - 通过工厂方法的对象实例化没有给出期望的结果

objective-c - 我是否应该创建子类 NSManagedObject?

javascript - 我如何知道哪个元素被点击?

javascript - Webdriverio如何执行TAB键操作

javascript - 如何使用传递给 reducer 的事件对象验证 reducer 内的单选按钮?

javascript - 如何在django项目上创建动态页面?