(在RxKotlin和RxJava中工作,但为了简单起见使用元代码)
许多Reactive Extensions
指南首先从已有数据创建Observable
。从The introduction to Reactive Programming you've been missing开始,它是从单个字符串
var soureStream= Rx.Observable.just('https://api.github.com/users');
同样,从RxKotlin的首页,从填充的列表
val list = listOf(1,2,3,4,5)
list.toObservable()
现在考虑一个产生outStream
,
var outStream = sourceStream.filter({x > 3})
在两个指南中,源事件都声明为 apriori 。这意味着事件的时间表有某种形式
source: ----1,2,3,4,5-------
out: --------------4,5---
如何修改sourceStream
以成为更多的管道?换句话说,sourceStream
创建期间没有可用的输入数据?当源事件可用时,它会立即由out处理:
source: ---1--2--3-4---5-------
out: ------------4---5-------
我希望找到动态更新的Observable.add()
var sourceStream = Observable.empty()
var outStream = sourceStream.filter({x>3})
//print each element as its added
sourceStream .subscribe({println(it)})
outStream.subscribe({println(it)})
for i in range(5):
sourceStream.add(i)
这可能吗?
答案 0 :(得分:1)
我是新人,但如果没有主题,我怎么能解决我的问题呢?如果我是 测试应用程序,我希望它每5次“弹出”一次更新 秒,除了这个Publish订阅,我还能怎么办呢 商业?有人可以发布这个问题的答案 涉及订阅者?
如果您想每五秒钟更新一次更新,请使用interval
运算符创建一个Observable,不要使用主题。有十几个不同的运算符用于构建Observable,因此您很少需要一个主题。
也就是说,有时你确实需要一个,当测试代码时它们非常方便。我在单元测试中广泛使用它们。
To Use Subject Or Not To Use Subject?是关于主题的优秀文章。