以PubSub/Observer模式对事件进行排队
Queueing events in the PubSub / Observer patterns
我总是发现直接进入示例更容易。
object.on('eventone', function() {
console.log('eventone - listener one');
object.trigger('eventtwo');
});
object.on('eventone', function() {
console.log('eventone - listener two');
});
object.on('eventtwo', function() {
console.log('eventtwo');
});
object.trigger('eventone');
在大多数PubSub实现中,这会导致以下日志顺序:
- eventone-监听器一
- 事件二
- eventone-监听器二
在过去,这给这个序列的语义带来了问题。通常,开发人员会假设"eventone"的所有侦听器在"eventtwo"开始之前就已经启动,这可能会进一步引入序列逻辑错误。更明智的日志顺序可能是:
- eventone-监听器一
- eventone-监听器二
- 事件二
所以我想问题是——为什么大多数实现不遵循事件队列?使用它和不使用它可能会产生什么影响。
干杯!
Pubsub旨在使一个订阅者不依赖、不知道或不受其他订阅者的阻碍。以下是几个问题,探讨了每种方法的优缺点:
- NodeJS与异步地狱
- 用Javascript文件随机阻塞
- AS3中的比赛条件射击项目
- 如何链接ajax请求
- 脚本标记-async&推迟
- 用一元咒语延迟的JQuery招魂
- 如何使用jQuery deferred
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 以PubSub/Observer模式对事件进行排队
- 有没有一种方法可以将我的JS函数排队到JSF事件队列中
- HTML Javascript 事件已排队
- React在状态更改时丢弃排队的事件
- 防止事件处理程序排队
- 如何使用 Move.js 防止排队或禁用点击事件
- 事件未正确排队
- Backbone.js:如何将挂起的同步事件排队到服务器
- 如何防止启动排队的事件回调
- 我如何在Javascript循环中排队事件
- jQuery取消先前排队的事件处理程序来重新启动CSS动画
- 如何阻止单击事件在多次单击时排队
- 排队等待旧的单击事件值