映射 RxMoya 对 RxSwift 可观察结果的单一响应
map RxMoya Single Response to RxSwift Observable Result
我正在尝试将 Single<Response>
映射到 Observable<Result<CustomObject, MoyaError>>
,但是我不确定该怎么做。
我目前的功能如下:
func accountInfo() -> Observable<AccountInfo> {
return provider
.rx
.request(.accountInfo)
.map(AccountInfo.self)
.asObservable()
}
但是,我想要如下内容:
func accountInfo() -> Observable<Result<AccountInfo, MoyaError>> {
return provider
.rx
.request(.accountInfo)
.mapResult(AccountInfo.self)
.asObservable()
}
如果能帮助创建 mapResult
扩展程序,那就太好了。
谢谢
像这样:
extension Single {
var asObservableResult: Observable<Result<Element, Error>> {
return asObservable()
.map { .success([=10=]) }
.catchError { .just(.failure([=10=])) }
}
}
尽管将其映射到驱动程序而不是 Observable 可能更有意义...否则,您有两个可能的错误...
extension Single {
var asDriverResult: Driver<Result<Element, Error>> {
return asObservable()
.map { .success([=11=]) }
.asDriver(onErrorRecover: { .just(.failure([=11=])) })
}
}
我正在尝试将 Single<Response>
映射到 Observable<Result<CustomObject, MoyaError>>
,但是我不确定该怎么做。
我目前的功能如下:
func accountInfo() -> Observable<AccountInfo> {
return provider
.rx
.request(.accountInfo)
.map(AccountInfo.self)
.asObservable()
}
但是,我想要如下内容:
func accountInfo() -> Observable<Result<AccountInfo, MoyaError>> {
return provider
.rx
.request(.accountInfo)
.mapResult(AccountInfo.self)
.asObservable()
}
如果能帮助创建 mapResult
扩展程序,那就太好了。
谢谢
像这样:
extension Single {
var asObservableResult: Observable<Result<Element, Error>> {
return asObservable()
.map { .success([=10=]) }
.catchError { .just(.failure([=10=])) }
}
}
尽管将其映射到驱动程序而不是 Observable 可能更有意义...否则,您有两个可能的错误...
extension Single {
var asDriverResult: Driver<Result<Element, Error>> {
return asObservable()
.map { .success([=11=]) }
.asDriver(onErrorRecover: { .just(.failure([=11=])) })
}
}