我有一个可观察的,当它触发时会显示一条消息。延迟后,我想淡出该消息,除非同时该 observable 再次触发。
换句话说,给定一个 observable,我想创建另一个 observable,这样当最后一个事件触发时,第一个 observable 超过指定时间之前,创建的 observable 触发最后一个事件。
我有一个可观察的,当它触发时会显示一条消息。延迟后,我想淡出该消息,除非同时该 observable 再次触发。
换句话说,给定一个 observable,我想创建另一个 observable,这样当最后一个事件触发时,第一个 observable 超过指定时间之前,创建的 observable 触发最后一个事件。
给定 observable 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();
这将创建一个 observable d
,它将在 2000 毫秒不活动后触发o
。
注意:v
订阅函数中的值总是true
。