映射 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=])) })
    }
}