Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs 基于事件正文中的唯一id拆分node.js事件流_Rxjs - Fatal编程技术网

Rxjs 基于事件正文中的唯一id拆分node.js事件流

Rxjs 基于事件正文中的唯一id拆分node.js事件流,rxjs,Rxjs,我有一个基于node.js的定位服务,它可以在用户移动时生成事件,我想使用RxJS来处理这些事件,并寻找任意复杂的模式,比如用户进入一个区域,在1小时内访问2个兴趣点 首先,我需要根据唯一的用户ID(来自事件体)分割事件流,但我没有找到任何可以这样做的RxJS函数 filter()要求预先知道所有UUID,这是不可取的。 groupBy()看起来需要在返回分组的观测值之前处理整个序列,这是不可能的 我在想,也许我需要构建一个定制的可观察对象,维护UUID到可观察对象的映射,并根据需要实例化新的可

我有一个基于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*/));
       });