【发布时间】:2021-01-13 20:10:38
【问题描述】:
是否可以使用 rxjs 对对象属性进行分组,并将一组的新发出事件与其他组的最新值进行比较?在此之后将所有流合并为一个。
例如,我有 5 个房间,每个房间都有一盏灯。发射器随机打开或关闭其中一个房间的灯。我想知道管道中所有房间的灯何时关闭或打开,以及何时将属性 allLightsOff 添加到发射的对象。
const source = interval(1000).pipe(
map((e) => {
return {
iteration: e,
room: Math.floor(Math.random()*5),
lightOn: Math.round(Math.random()),
allLightsOff: null
};
}),
groupBy((o) => o.room)
// how to compare one room with all others?
// how to merge alls groups to a single stream together again?
);
const subscribe = source.subscribe((o) => console.log(o));
【问题讨论】:
-
您是否有这些房间的任何状态上下文以及每个房间的当前状态数据以便随时访问它?
-
@Zac,你说的状态上下文是什么意思?我有一个类似上面模拟的流。
-
我的意思是,你在哪里存储或保存这些发出的数据?
-
@Zac,视情况而定,有时它以流的形式进入,有时作为时间序列数据库中的数组。
标签: javascript rxjs reactive-programming