Flow中是否存在RxJava的switchIfEmpty等效实现?
在Flow中实现RxJava switchIfEmpty的等效逻辑
完全可以实现,Flow 里的onEmpty操作符就是对应RxJavaswitchIfEmpty的等效方案,能完美满足你依次调用多数据源的需求。
对应你给出的RxJava代码,Flow的实现写法如下:
source1.getData() .onEmpty { source2.getData() } .onEmpty { source3.getData() }
关键说明
onEmpty是kotlinx-coroutines-core库自带的标准操作符,不需要额外引入依赖- 执行逻辑和RxJava版本完全一致:优先尝试source1,若source1没有发射任何元素就完成,则启动source2;如果source2同样为空,再触发source3
- 只要某一个数据源发射了数据,后续的备用数据源就不会被执行
内容的提问来源于stack exchange,提问作者M Rajoy
相关产品推荐
相关产品推荐

