gpt4 book ai didi

ios - 使用 RxSwift 处理请求时出错

转载 作者:搜寻专家 更新时间:2023-11-01 06:17:21 25 4
gpt4 key购买 nike

我有两个可观察对象,第一个检查 AccessToken 是否存在,如果不存在则返回 NotLoggedIn 错误类型。第二个获取用户数据,如果 rx_validate 中的 AccessToken 存在,则应该调用它。但是,我似乎无法弄清楚如何将这些可观察值组合起来,以处理响应中的 rx_fetchUserData 错误。

错误枚举

enum LoginError: Error {
case NotLoggedIn
case Unknown
case NoConnection
}

viewModel 中的可观察对象

// MARK: validate if user is logged in
public func rx_validate() -> Observable<String> {
return Observable.create({ observer in

//Check if AccessToken exist
if let token = AccessToken.current {
observer.onNext(token.authenticationToken)
observer.onCompleted()
} else {
observer.onError(LoginError.NotLoggedIn)
}

return Disposables.create()
})
}

// MARK: Fetch data
public func rx_fetchUserData(token: String) -> Observable<User> {
return Network.provider
.request(.auth(fbToken: token))
.retry(1).debug()
.mapObject(User.self)

}

最佳答案

你应该使用flatMap:

rx_validate()
.flatMap { token in
return rx_fetchUserData(token: token)
}
.subscribe(onNext: { user in
// do something with the user
},
onError: { error in
// manage errors
})

关于ios - 使用 RxSwift 处理请求时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41620234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com