首页 文章

RXJava错误处理多个Observable

提问于
浏览
0

我有一个逻辑,我必须在从其他服务获取一些数据后运行 . 如何处理其中一个或全部的故障?

我希望记录一个错误,而不是抛出异常

// 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();

这让我陷入困境 . 没有任何内容写入日志 .

1 回答

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

    你可以试试上面的东西 . providerObservableextendedProfileObservablehandleProviderAndProfilecombineLatest 的输入, (providerObservable, extendedProfileObservable, handleProviderAndProfile) -> operationFunction(providerObservable, extendedProfileObservable, handleProviderAndProfile) 是为lambda提供结果 . 这应该是对所有三个输入执行的操作 .

相关问题