RxSwift:订阅 Observable.zip。将结果作为元组处理?

RxSwift: Subscribe to Observable.zip. Handle result as tuple?

我正在尝试将两个网络请求与 zip 函数结合起来。这两个请求依赖于另一个请求 (getInfoA)。

这是我正在使用的代码:

IoC.networkProcessService.getInfoA(with: identifier)
            .map { infoA -> Observable<(InfoB, InfoC)> in

                return Observable.zip(
                    IoC.networkProcessService.getInfoB(with: infoA),
                    IoC.networkProcessService.getInfoC(with: infoA) 
                { return ([=11=], ) }

            }
            .subscribe(onNext: { result in
                print(result)

               // result is of type Observable<(InfoB, InfoC)>...

            }, onError: { error in
                Logger.main.log(category: [.network, .error], arguments: error.localizedDescription)

            })
            .disposed(by: disposeBag)

我希望 result(在 subscribe 块中)是一个元组并且我能够访问 infoBinfoC.

但事实并非如此。 subscribe 是从 zip 访问元组的正确运算符吗?

只需将 map 更改为 flatMapresult 将更改为元组而不是 Observable。

IoC.networkProcessService.getInfoA(with: identifier)
  .flatMap { infoA -> Observable<(InfoB, InfoC)> in

    return Observable.zip(
      IoC.networkProcessService.getInfoB(with: infoA),
      IoC.networkProcessService.getInfoC(with: infoA)
      { return ([=10=], ) }

  }
  .subscribe(onNext: { result in
    print(result)

    // result is of type (InfoB, InfoC)

  }, onError: { error in
    Logger.main.log(category: [.network, .error], arguments: error.localizedDescription)

  })
  .disposed(by: disposeBag)