考虑以下两个事件流。每个事件都有timestamp / ts和value属性。
我想将事件具有相同时间戳的这两个流组合成一个带有应用的值转换的结果流。如果一个流缺少一个时间戳(例如下面示例中的黄色ts=3
),则应忽略该时间戳。
希望使用xstream或rxjs等反应式编程库来解决问题。我对反应式编程的概念很陌生,但如果有人提出另一个建议,那我就是全智能的。谢谢!
答案 0 :(得分:3)
只需使用combineLatest并仅传递具有匹配时间戳的组合。其他组合映射到null
,您稍后会将其过滤掉。
这是xstream中的解决方案:
var streamOut = xs.combine(
(a, b) => {
if (a.ts === b.ts) {
return {ts: a.ts, value: a.value + b.value};
} else {
return null;
}
},
streamA, streamB
).filter(x => x !== null);
检查它在JSBin中运行:https://jsbin.com/saxawatuza/edit?js,console。