我有两个流。一个是数据流(可以是任何类型),另一个是作为门的布尔流。我需要将它们合并成一个具有以下行为的流:
- 当门打开时(最近的值为true),数据应该直接流过
- 当门关闭时(最近的值为false),数据应该被缓冲,以便在下次门打开时释放为单个元素
- 解决方案应保留所有数据元素和顺序
我不确定如何组合这些流。这是我一直在测试的输入:
// a demo data stream that emits every second
var dataStream = Observable.Interval(TimeSpan.FromSeconds(1));
// a demo flag stream that toggles every 5 seconds
var toggle = false;
var gateStream = Observable.Interval(TimeSpan.FromSeconds(5))
.Select(_ => toggle = !toggle);