rx-java2 - RxJava2 合并和多播事件流
问题描述
我有一个事件源,它发出一个Snapshot
后跟Deltas
假设它看起来有点像
Flowable.just("A", "1", "2", "3")
其中“A”是快照,“1”、“2”、“3”是更新。
我希望第一个订阅者检索
"A", "1", "2", "3"
第二个订阅者(假设它发生在“2”和“3”之间)接收
"A".apply("1").apply("2"), "3"
所以我正在寻找的是一个多播流的操作符,但是在所有后续订阅者的下一个发射之前从第一个发射到下一个发射之前发出合并的值。
有人可以指出我正确的方向吗?开始编写自定义运算符,但我觉得我缺少一些简单的东西。
解决方案
和我的同事一起做了更多的工作,我们提出了以下建议
Flowable.just("A", "1", "2", "3")
.scan(Tuple(empty, empty), (prev, update) -> build "snapshot" "last delta" tuple
.skip(1)
.replay(1) // replay tuple of "current snapshot" "latest delta"
.refCount()
.scan(empty, (prev, update) -> empty == prev ? update.snapshot : update.delta)
.skip(1)
工作得很好,希望对下一个尝试同样事情的人有用
推荐阅读
- clearcase - 有没有办法通过命令行在 clearcase 上添加动态视图快捷方式?
- c# - C#中的字典
- firebase - Firestore 中如何仅显示属于特定 uid 的文档?
- python - 当我们重塑 numpy 数组时,如何推断步幅大小?
- github - 如何使用 GitHub Actions `workflow_run` 事件?
- javascript - IE11中的无效字符问题
- java - web.xml 中的安全更改未反映
- android - Kotlin 中的井字游戏
- javascript - 如何测试苗条的输入反应性?
- c# - 使用 C# 进行电子邮件验证的简单正则表达式。中间有@符号