【发布时间】:2017-08-09 16:45:40
【问题描述】:
我是响应式编程的新手,在使用“一切都可以是流”的口头禅时遇到困难。我正在考虑以下场景 - 我有一个 websocket 事件流 定义如下:
Rx.Observable.create((observer) => {
io.on('connect', function(socket){
socket.on("enroll", function(player) {
observer.next({
event: 'enroll',
player,
socket
});
});
socket.on('resign', function(player){
observer.next({
event: 'resign',
player,
socket
});
});
});
return {
dispose: io.close
};
});
然后我可以做类似的事情
enrollmentStream = events$
.filter(find({ event: "enroll" }))
.map(pick('player'));
同样
resignationStream = events$
.filter(find({ event: "resign" }))
.map(pick('player'));
我想将已注册的玩家聚集在一个流中,将他们分成 4 组,但显然这应该只针对在注册流中但不在 resignationStream 中或至少最后一个事件是注册的用户进行。我该怎么做?
这是大理石图。
有 5 名玩家报名。当有 4 名玩家注册时,游戏开始。请注意,第二个玩家(紫色)注册但随后退出,因此游戏不会以蓝色大理石开始,而是以下一个 - 黄色 - 因为只有在那之后才有真正的 4 名玩家准备好。
大概应该有一些类似"without"的流操作...有吗?
【问题讨论】:
-
我不确定我是否符合您的要求,您能否添加您需要处理的一系列操作的弹珠图或序列图?
-
请查看更新后的问题。
标签: stream rxjs reactive-programming