以PubSub/Observer模式对事件进行排队

Queueing events in the PubSub / Observer patterns

本文关键字:事件 排队 模式 PubSub Observer      更新时间:2023-09-26

我总是发现直接进入示例更容易。

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实现中,这会导致以下日志顺序:

  1. eventone-监听器一
  2. 事件二
  3. eventone-监听器二

在过去,这给这个序列的语义带来了问题。通常,开发人员会假设"eventone"的所有侦听器在"eventtwo"开始之前就已经启动,这可能会进一步引入序列逻辑错误。更明智的日志顺序可能是:

  1. eventone-监听器一
  2. eventone-监听器二
  3. 事件二

所以我想问题是——为什么大多数实现不遵循事件队列?使用它和不使用它可能会产生什么影响。

干杯!

Pubsub旨在使一个订阅者不依赖、不知道或不受其他订阅者的阻碍。以下是几个问题,探讨了每种方法的优缺点:

  • NodeJS与异步地狱
  • 用Javascript文件随机阻塞
  • AS3中的比赛条件射击项目
  • 如何链接ajax请求
  • 脚本标记-async&推迟
  • 用一元咒语延迟的JQuery招魂
  • 如何使用jQuery deferred