2017-03-08 70 views
11

我有两个Completable。我想要做以下的场景: 如果第一个Completable到onComplete,继续第二个Completable。最后的结果将是第二完成的完成。如何在RxJava2中链接两个Completable

这是我如何做到这一点时,我有单getUserIdAlreadySavedInDevice()和Completable 登录()

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

} 

回答

32

您正在寻找andThen操作。

返回一个Completable,首先运行此Completable,然后另一个Completable。

firstCompletable 
    .andThen(secondCompletable) 

一般情况下,这种操作是一个 “替代” 的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) 
+0

就是这样,谢谢! –

+1

这应该被标记为正确的答案。我遇到了同样的情况,并且一直在寻找答案2天。你的回答@Maxim Ostrovidov是我正在寻找的。谢谢! – chip

+0

此外,我已经尝试过doOnComplete(),不要这样做,它会终止流 –