1. ホーム
  2. java

RxJava2で2つのCompletableを連結する方法

2023-09-04 12:47:27

質問

Completableを2台持っています。以下のシナリオを実行したいと思います。 最初のCompletableがonCompleteに到達したら、2番目のCompletableを続行します。最終結果は、2番目のCompletableのonCompleteになります。

これは、Singleの場合、私がやっている方法です。 getUserIdAlreadySavedInDevice() と補完可能な login() :

@Override
public Completable loginUserThatIsAlreadySavedInDevice(String password) {
    return getUserIdAlreadySavedInDevice()
            .flatMapCompletable(s -> login(password, s))

}

どのように解決するのですか?

あなたが探しているのは andThen 演算子を探しています。

まずこのCompletableを実行し、次にもう一方のCompletableを実行するCompletableを返します。

firstCompletable
    .andThen(secondCompletable)

一般に、この演算子は、"replacement" の代わりに flatMapCompletable :

Completable       andThen(CompletableSource next)
<T> Maybe<T>      andThen(MaybeSource<T> next)
<T> Observable<T> andThen(ObservableSource<T> next)
<T> Flowable<T>   andThen(Publisher<T> next)
<T> Single<T>     andThen(SingleSource<T> next)