[英]Rxjava takeuntil wait until first stream finishes
我有一个发射项目的模拟器 class,可以通过以下方式控制它开始发射: Simulator.emiting -> Observable,true -> 开始发射,false,停止发射项目暴露: Simulator.items -> Observable
项目将被处理,处理比发射慢得多(处理可能发生在另一个线程上)
我试图在“发射+处理”开始和结束时获得一个可观察的信号,所以:
from: 开始发射, 1, 2, ,3, 结束发射
to: 开始发射和处理, 1-----, 2-----, 3-----, 结束发射和处理
我怎样才能得到发射+处理可观察的? 我尝试使用
Simulator.items.map { process(it) }.takeUntil(simulator.emitting.filter { it == false }) 但这将在处理完成之前停止。
所以看起来这是一个微不足道的问题,使用 zip 运算符
val stoppedEmitting = simulator.emitting.filter { it == false }
val emitted = simulator.items.takeUntil(stoppedEmitting )
val processed = emitted.map { item -> process(item) }
然后“zip”操作将等到最后一个项目得到处理:
val processingFlow = emitted.zipWith(processed) { item, processedItem -> ... }
processing.subscribe { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.