如何将RxSwift的Single转为Observable且不让序列完成?求简便实现
嘿,这个问题我之前也碰到过!你想要把Single转成永远不终止的Observable,其实有几个比你当前用的flatMap{ Observable.just($0)}更简洁的方式:
场景1:只发射一次Single的值,但序列永远不终止
如果你的需求是拿到Single的结果后,让Observable保持活跃状态(不发送终止信号),可以直接把Single转成Observable后,拼接一个永远不会终止的Observable:
val neverEndingObservable = single.toObservable().concatWith(Observable.never())
Observable.never()会生成一个永远不会发射任何事件、也不会调用onComplete或onError的Observable,拼接后整个序列在发送完Single的值后就会一直处于活跃状态,不会终止。
场景2:重复发射Single的值,且序列永远不终止
如果希望不断重复获取并发射Single的值(同时序列不终止),直接用repeat()操作符就可以:
val repeatingObservable = single.toObservable().repeat()
repeat()会自动重复订阅原Single,每次都发射它的值,而且不会触发序列终止,完美符合“永远不终止”的需求。
这两种方式都比你原来的flatMap写法更简洁直接,不需要额外的嵌套操作,你可以根据自己的实际需求来选择~
内容的提问来源于stack exchange,提问作者Vladlex
相关产品推荐
相关产品推荐

