将RxMoya单个响应映射到RxSwift可观测结果
我正在尝试将一个将RxMoya单个响应映射到RxSwift可观测结果,swift,rx-swift,moya,Swift,Rx Swift,Moya,我正在尝试将一个单个映射到一个可观察的,但是我不确定如何做 我目前的职能如下: func accountInfo() -> Observable<AccountInfo> { return provider .rx .request(.accountInfo) .map(AccountInfo.self) .asObservab
单个
映射到一个可观察的
,但是我不确定如何做
我目前的职能如下:
func accountInfo() -> Observable<AccountInfo> {
return provider
.rx
.request(.accountInfo)
.map(AccountInfo.self)
.asObservable()
}
func accountInfo()->可观察{
返回提供者
.rx
.request(.accountInfo)
.map(AccountInfo.self)
.asObservable()
}
不过,我想提出以下建议:
func accountInfo() -> Observable<Result<AccountInfo, MoyaError>> {
return provider
.rx
.request(.accountInfo)
.mapResult(AccountInfo.self)
.asObservable()
}
func accountInfo()->可观察{
返回提供者
.rx
.request(.accountInfo)
.mapResult(AccountInfo.self)
.asObservable()
}
创建mapResult
扩展的任何帮助都将非常有用
谢谢诸位诸如此类:
extension Single {
var asObservableResult: Observable<Result<Element, Error>> {
return asObservable()
.map { .success($0) }
.catchError { .just(.failure($0)) }
}
}
扩展单{
var ASObservable结果:可观察{
返回asObservable()
.map{.success($0)}
.catchError{.just(.failure($0))}
}
}
虽然将其映射到驱动程序而不是可观察到的对象可能更有意义。。。否则,您可能会有两个错误
extension Single {
var asDriverResult: Driver<Result<Element, Error>> {
return asObservable()
.map { .success($0) }
.asDriver(onErrorRecover: { .just(.failure($0)) })
}
}
扩展单{
var asDriverResult:驱动程序{
返回asObservable()
.map{.success($0)}
.asDriver(onErrorRecover:{.just(.failure($0))})
}
}