RxJava返回单个,在

时间:2018-02-02 19:31:02

标签: kotlin rx-java rx-java2

我正在尝试完成以下操作:将一些数据作为单个返回,然后执行完成后。由于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) }

)

4 个答案:

答案 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) }