RxJava返回单个,执行后完成

Jer*_*emy 8 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) }

)
Run Code Online (Sandbox Code Playgroud)

aka*_*okd 26

用途flatMap:

single.flatMap(v -> completable.andThen(Single.just(v)))
Run Code Online (Sandbox Code Playgroud)


Kep*_*ian 6

假设您实际上想在Completable之后返回 Single ,这是另一种方法:

使用Java:

single.flatMap(x -> completable.toSingleDefault(x))
Run Code Online (Sandbox Code Playgroud)

使用科特林:

single.flatMap { completable.toSingleDefault(it) }
Run Code Online (Sandbox Code Playgroud)


Var*_*ina 5

请注意,如果您不关心结果是 Single 还是 Completable,则flatMapCompletableRxJava2 中有一个特殊的运算符可以在 Single 之后执行Completable :

single.flatMapCompletable(result -> completable);