我有一个可完成的和可观察的,可以发射项目的。我必须将它们组合在一起。某种Observable.combineLatest,但具有可完备性和可观察性。所以逻辑是:如果Observable首先发出项,当complete不完整时,它应该等待complete (而不是忽略),如果complete是完整的,那么应该处理Observable中的项。
我尝试将Completable转换为Observable,但该Observable不发出onNext,因此Observable.zip、Observable.combineLatest等不起作用。
适用于我的代码:
myCompletable.andThen(myObservable).subscribe()
但我不会异步调用completable和observable。我只是等待可完成的completes.Is,是否可以异步运行可完成的和可观察的,并在Complitable编译时处理可观察的项?
发布于 2019-09-05 01:24:22
您可以将myCompletable转换为Observable并使用.defaultIfEmpty来保证至少会发出一个项。检查此示例:
val myObservable: Observable<Long> = ...
val myCompletable: Completable = ...
Observable.combineLatest(
myObservable
myCompletable.toObservable<Long>().defaultIfEmpty(0L),
BiFunction<Long, Long, Long> { a, b -> a}
)
.subscribe()请注意,按照注释中的建议,只有myObservable发出的最后一项将保留在此方法中。
https://stackoverflow.com/questions/57775254
复制相似问题