我正在尝试完成以下操作:将一些数据作为单个返回,然后执行完成后。由于single.andThen(),以下代码无法编译。需要按此顺序执行操作。
val single = Single.create<String> { it.onSuccess("result") }
val completable = Completable.create { println("executing cleanup") }
val together = single.andThen(completable)
together.subscribe(
{ println(it) },
{ println(it) }
)
答案 0 :(得分:22)
使用flatMap
:
single.flatMap(v -> completable.andThen(Single.just(v)))
答案 1 :(得分:1)
RxJava2中有一个特殊的flatMapCompletable
运算符:
single.flatMapCompletable(result -> completable);
答案 2 :(得分:0)
如果有人对RxSwift解决方案感兴趣:
saveObjectsA().flatMap { (objectsA: [A]) -> Single<Bool> in
B.objects = objectsA
return completable.andThen(Single.just(true))
}
saveObjectsA返回Single <[A]>,它是B的属性(先前创建)。我需要先保存它,然后再保存B。
答案 3 :(得分:0)
假设您确实要在Completable之后返回 ,这是另一种方法:
使用Java:
single.flatMap(x -> completable.toSingleDefault(x))
使用Kotlin:
single.flatMap { completable.toSingleDefault(it) }