繁体   English   中英

Rxjava takeuntil 等到第一个 stream 完成

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM