如何创建仅在输入停止一段时间后输出的信号或流?
我想要实现的目标如下:
S1 : S - - S S S S - - - - - S S S S - - - -
S2 : - - - - - - - - - S - - - - - - - - S -
我想将S1转换为S2,如果事件已停止为3,则仅输出最后一个事件 - (其中 - 是x秒)。
答案 0 :(得分:1)
使用throttle:
方法,在发送下一个信号之前等待x秒,然后再发送信号。
答案 1 :(得分:0)
这是C#代码,但您应该能够翻译:
string xs = "S--SSSS-----SSSS----";
IObservable<char> source =
Observable
.Interval(TimeSpan.FromSeconds(1.0))
.Zip(xs.ToCharArray(), (n, c) => c)
.Where(c => c == 'S');
IObservable<char> query =
source
.Select(x =>
Observable
.Timer(TimeSpan.FromSeconds(3.0))
.Select(y => x))
.Switch();
这会在正确的时间产生两个值。
答案 2 :(得分:0)
确定。谷歌搜索后,我发现了我想要的东西。 http://reactivex.io/documentation/operators/debounce.html