Rxjs 基于事件正文中的唯一id拆分node.js事件流
我有一个基于node.js的定位服务,它可以在用户移动时生成事件,我想使用RxJS来处理这些事件,并寻找任意复杂的模式,比如用户进入一个区域,在1小时内访问2个兴趣点 首先,我需要根据唯一的用户ID(来自事件体)分割事件流,但我没有找到任何可以这样做的RxJS函数 filter()要求预先知道所有UUID,这是不可取的。 groupBy()看起来需要在返回分组的观测值之前处理整个序列,这是不可能的 我在想,也许我需要构建一个定制的可观察对象,维护UUID到可观察对象的映射,并根据需要实例化新的可观察对象。然后,在搜索模式匹配时,这些可观察对象中的每一个都需要经历相同的处理,并最终在用户的移动与模式匹配时触发一些动作。这里的一个明显的挑战是,当用户进入系统并四处移动时,我有一个动态增长的观察图Rxjs 基于事件正文中的唯一id拆分node.js事件流,rxjs,Rxjs,我有一个基于node.js的定位服务,它可以在用户移动时生成事件,我想使用RxJS来处理这些事件,并寻找任意复杂的模式,比如用户进入一个区域,在1小时内访问2个兴趣点 首先,我需要根据唯一的用户ID(来自事件体)分割事件流,但我没有找到任何可以这样做的RxJS函数 filter()要求预先知道所有UUID,这是不可取的。 groupBy()看起来需要在返回分组的观测值之前处理整个序列,这是不可能的 我在想,也许我需要构建一个定制的可观察对象,维护UUID到可观察对象的映射,并根据需要实例化新的可
你知道如何用RxJS实现类似的功能吗?我想你误解了
groupBy()
的工作原理。每次生成一个新密钥时,它都会生成一个新的可观察的
,如果密钥已经存在,它将被推送到现有的可观察的
因此,对于您的问题,它应该如下所示:
var source = getLocationEvents();
var disposable = new Rx.CompositeDisposable();
disposable.add(
source.groupBy(function(x) { return x.userid; })
.map(function(x) {
return x.map(function(ev) { /*Process the the event*/ });
})
.subscribe(function(group) {
disposable.add(group.subscribe(/*Do something with the event*/));
});