发布/订阅中的发布者应为同步或异步
Publisher in Pub/Sub should be Synchronous or Asynchronous?
我对机制的看法:
- 模式明智的发布者应该只发布一个事件,而不应该关心该主题/事件的侦听器/订阅者。
- 在JavaScript的情况下,许多用于Pub/Sub的框架以同步方式发布事件
- 例如:框架只是维护事件到函数的映射。
- 在特定事件发生时,它会迭代订阅者并逐个调用函数 -> function_1.apply(context, args),然后function_2.apply(context, args)
- 这使得它同步,因为除非并且直到function_1完成,否则function_2不知道发生了特定事件。
在JavaScript中实现Pub/Sub的理想方法是什么?
我在发布方法中添加了一个"enqueue"参数,当 true 时,将实际发布包装在 setTimeout(..., 0) 中,以便发布者可以选择立即触发处理,或者将其排队在 JavaScript 执行队列中,允许当前执行路径首先完成。
如果要维护自己的订阅者列表,则可以让 subscription 方法将 enqueue 标志实现为订阅的属性。 因此,发布者可以根据订阅中指示的首选项将各个订阅者排队。
相关文章:
- 异步获取数据使用JavaScript同步获取数据
- javascript函数中的异步与同步.(Node.js)
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 如何模拟同步ajax调用?(基于异步的同步)
- 为什么同步睡眠功能没有被承诺内异步化
- 如何在异步函数与Deferredjquery之间同步
- 使用模态库从嵌套的异步调用中生成javascript同步代码
- 将数据发布到iframe是同步还是异步
- 节点.js / 续集.js / 快递.js - 如何插入多对多关联?(同步/异步?
- NodeJS中的异步与同步
- javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行
- 如何同步2个异步瀑布
- 异步函数调用是否可以在两个同步语句之间完成
- 同步异步创建的承诺
- 同步/异步AJAX函数的模式
- 如何在 javascript 中同步异步方法
- 设置同步/异步函数序列的正确方法,所有这些函数都可以停止表单提交和进一步处理
- 浏览器呈现和javascript执行的同步/异步特性
- javascript中异步回调的结构:同步异步
- jQuery按顺序同步异步请求