缓冲/忽略事件直到不活动时间然后仅触发最后一个事件

时间:2010-11-22 12:49:11

标签: javascript events reactive-extensions-js

我有一个可观察的,当它触发时会显示一条消息。延迟一段时间后,我想把这条消息淡出来,除非在可观察的时间再次发射。

换句话说,给定一个observable,我想创建另一个observable,这样当最后一个事件触发第一个observable超过指定的时间时,创建的observable会触发最后一个事件。

1 个答案:

答案 0 :(得分:0)

鉴于可观察的o,以下代码可以满足我的需求:

var d = o
    .DistinctUntilChanged()
    .Timestamp()
    .Select(function(e) { return e.Timestamp; })
    .Publish();
d.CombineLatest(d.Delay(2000), function(a, b) { return a === b; })
    .Where(function(o) { return o; })
    .Subscribe(function(v) { /* ... do something with v ... */ });
d.Connect();

这会创建一个可观察的d,在o处于2000毫秒不活动状态后会触发。

注意:订阅功能中v的值始终为true