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