我有一个正在迭代的列表,我只想打印列表中匹配的项目(我知道这很简单,但这只是 rx java 的学习练习)。我也在使用 groovy 扩展。
def scheduler = Schedulers.immediate()
Observable.from(["a","b","c"]).takeFirst({
return it == "b"
}).subscribeOn(scheduler).subscribe({println it})
这有效,并且只按预期打印出 b
。我想知道是否可以将 println it
移动到 subscribeOn
调用之前,所以它就像
def scheduler = Schedulers.immediate()
Observable.from(["a","b","c"]).takeFirst({
return it == "b"
}).SOMEOPERATIONHERE({println it}).subscribeOn(scheduler)
我可以使用map
或flatmap
,但这似乎是错误的,因为我实际上并没有将一个可观察到的映射到另一个。我只想在链末尾的可观察对象上执行一些 void
操作,但我喜欢在 subscribeOn
调用之前将所有操作放在一起的语法。
最佳答案
您可以使用doOnNext
来注册每当Observable发出一个项目时要执行的操作。 RxJava 中还有其他 doOnXXX 运算符用于注册操作来监视 Observable 的进度,例如 doOnCompleted 、 doOnError 。
关于java - rx java observable 仅在匹配的 observable 上链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476298/