私は次のことを達成しようとしています:一部のデータを単一として返し、完了後に実行可能にします。次のコードは、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) }
)
flatMap
を使用:
single.flatMap(v -> completable.andThen(Single.just(v)))
RxJava2には特別なflatMapCompletable
演算子があります:
single.flatMapCompletable(result -> completable);
実際にSingle after The Completableを返したいと仮定すると、別の方法があります:
Javaの使用:
single.flatMap(x -> completable.toSingleDefault(x))
Kotlinの使用:
single.flatMap { completable.toSingleDefault(it) }
RxSwiftソリューションに興味がある場合:
saveObjectsA().flatMap { (objectsA: [A]) -> Single<Bool> in
B.objects = objectsA
return completable.andThen(Single.just(true))
}
saveObjectsAは、B(以前に作成された)の属性であるSingle <[A]>を返します。 Bを保存する前に保存する必要がありました。