事件等待某一状态为某值后执行,适用于那种设计模式?

1.变量 A, 初始状态为 false,在时刻 t 后转换为 true
2.事件 B, 若 A = ture, 则执行;否则等待 A = ture 后执行。

我尝试使用发布订阅模式/观察者模式,但是感觉有点不合适:
1.发布订阅模式:比较适合同步的情况;
2.观察者模式:如果A已经为true, 这时候就没有事件推送了;

是我的思考有问题么?应该怎么做?如果是使用 JavaScript,有没有相关的库。

let status = false;

function onClick() {
    if(status) {
        // doSomething;
    } else {
       // waiting status === true, then doSomething
    }
}

最终,我使用了rxjs的BehaviorSubject类;

const statusSubject = new BehaviorSubject();
statusSubject.next(false);
setTimeout(() => {
    statusSubject.next(true);
}, timeout);

statusSubject.subscribe({
    next: status => {
        if (status) {
            // doSonething
        );
      }
    }
 });
阅读 2.8k
4 个回答

可以参考 event-watcher
只要在调用 emit 的时候,第三个参数传 true, 事件就会被缓存,之后调用on(或 one) 时第三个参数也为 true 的话,就会直接使用缓存值。

A 改变推送事件不就行了么

  1. 定义一个事件存储器
  2. 触发B事件,把事件函数存入事件存储器
  3. 如果A为true,执行储存器中所有函数,并清除
  4. 如果A为false,不做任何处理
  5. 当A的状态变为true时,查看事件存储器中是否有执行的函数
  6. 如果有,执行,并清除
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进