2017-12-11 18 views
0

他のサービスからいくつかのデータを取得した後に実行する必要があるロジックがあります。それらの1つまたはすべての障害をどのように処理するのですか?複数オブザーバブルのRXJavaエラー処理

私はこれは私が立ち往生

// Step 1 
Observable<Provider> providerObservable = providerService.getProvider(data).toObservable() 
        .onErrorResumeNext(e -> Observable.error(e.getCause())); 

// Step 2 
Single<Profile> profileObservable = profileService.getProfile(data) 
        .onErrorResumeNext(e -> Single.error(e.getCause())); 
Observable<ExtendedProfile> extendedProfileObservable = profileObservable.flatMap(this::getExtendedProfile).toObservable() 
        .onErrorResumeNext(e -> Observable.error(e.getCause())); 


// Combine 
Observable.combineLatest(providerObservable, extendedProfileObservable, this::handleProviderAndProfile) 
     .doOnError(throwable -> logError(throwable)) 
     .onErrorResumeNext(throwable -> Observable.empty()) 
     .subscribe(); 

エラーを記録したいと例外をスローしません。ログには何も書き込まれません。

よろしく、 イド

答えて

3
Observable.combineLatest(providerObservable, extendedProfileObservable, handleProviderAndProfile, 
      (providerObservable, extendedProfileObservable, handleProviderAndProfile) -> operationFunction(providerObservable, extendedProfileObservable, handleProviderAndProfile)) 
      .doOnError(throwable -> logError(throwable)) 
      .onErrorResumeNext(throwable -> Observable.empty()) 
      .subscribe(); 

あなたは上記のような何かを試すことができます。 providerObservable、extendedProfileObservableおよびhandleProviderAndProfileはcombineLatestおよび(providerObservable、extendedProfileObservable、handleProviderAndProfile) - > operationFunction(providerObservable、extendedProfileObservable、handleProviderAndProfile)に対して入力され、結果はlambdaに反映されます。これは、3つの入力すべてに対して実行されているはずです。

関連する問題