我有一个可观察到的布尔IObservable<bool>
。我想得到一个类似于旧的观察者的新观察者,但在每个真值之后插入一秒钟的额外虚假。
例如,如果原件是
time value
0 false
2 true
5 true
8 false
新的观察者将是
time value
0 false
2 true
3 false
5 true
6 false
8 false
你能帮忙吗?
编辑:以下是测试解决方案的示例
Observable.Interval(TimeSpan.FromSeconds(1))
.Where(x => x % 2 == 0)
.Select(x => x % 3 != 0)
答案 0 :(得分:2)
这样的东西?
someBoolObservable.SelectMany(x =>
Observable.Merge(
Observable.Return(x),
x ? Observable.Timer(TimeSpan.FromSeconds(1)).Select(_ => false) : Observable.Empty<bool>()));
答案 1 :(得分:1)
static void Main(string[] args)
{
var booleanOb = Observable.Interval(TimeSpan.FromSeconds(1)).Where(x => x % 2 == 0).Select(x => x % 3 != 0).Take(4);
var onlyFalseAfterTrue = booleanOb.Delay(TimeSpan.FromSeconds(1)).Where(x => x).Select(x => false);
var merged = booleanOb.Merge(onlyFalseAfterTrue);
using (merged.Timestamp().Subscribe(x => Console.WriteLine("{0}:{1}", x.Timestamp, x.Value)))
{
merged.Wait();
}
}