我有一个列表,我正在迭代,我想打印列表中只匹配的项目(我知道这是微不足道的,但它只是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
,但这似乎是错误的,因为我实际上并没有将一个observable映射到另一个。我只想对链末尾的observable执行一些void
操作,但我喜欢在subscribeOn
调用之前将所有操作放在一起的语法。
答案 0 :(得分:1)
您可以使用doOnNext
注册Observable发出项目时要执行的操作。 RxJava中还有其他doOnXXX
运算符用于注册监视Observable进度的操作,例如doOnCompleted
,doOnError
。