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
块中)是一个元组并且我能够访问 infoB
和 infoC
.
但事实并非如此。 subscribe
是从 zip
访问元组的正确运算符吗?
只需将 map
更改为 flatMap
,result
将更改为元组而不是 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)
我正在尝试将两个网络请求与 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
块中)是一个元组并且我能够访问 infoB
和 infoC
.
但事实并非如此。 subscribe
是从 zip
访问元组的正确运算符吗?
只需将 map
更改为 flatMap
,result
将更改为元组而不是 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)