我正在尝试将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
扩展名的帮助都很好。
谢谢
答案 0 :(得分:1)
类似这样的东西:
extension Single {
var asObservableResult: Observable<Result<Element, Error>> {
return asObservable()
.map { .success($0) }
.catchError { .just(.failure($0)) }
}
}
虽然将其映射到Driver而不是Observable可能更有意义...否则,您可能会遇到两个错误...
extension Single {
var asDriverResult: Driver<Result<Element, Error>> {
return asObservable()
.map { .success($0) }
.asDriver(onErrorRecover: { .just(.failure($0)) })
}
}