gpt4 book ai didi

swift - Alamofire 重试请求 - react 方式

转载 作者:可可西里 更新时间:2023-11-01 02:15:24 27 4
gpt4 key购买 nike

我在看那两个:

并尝试创建类似的东西,但没有 Moya,使用 Alamofire + RxSwift。

首先显然我应该把它贴在哪里,因为我的实现分为几个较小的部分。首先,我有生成 react 性请求的自定义方法:

static func rx_request<T>(requestConvertible: URLRequestConvertible, completion: (Request) -> Observable<T> ) -> Observable<T> {
let manager: Manager = Manager.sharedInstance
return manager
.rx_request { manager -> Request in
return Alamofire.request(requestConvertible)
}
.flatMap { request -> Observable<T> in
return completion(request)
}
.shareReplay(1)
}

稍后由特定的 Request 的便利类使用。例如我的 UserRequests 有这个私有(private)扩展来从它的方法中提取一些通用代码:

private extension Request {

func rx_userRequest() -> Observable<User> {
return self
.validate()
.rx_responseJSON()
.flatMap{ (request, json) -> Observable<User> in
guard
let dict = json as? [ String: AnyObject ],
let parsedUser: User = try? Unbox(dict) else {
return Observable.error(RequestError.ParsingError)
}

return Observable.just(parsedUser)
}
.rx_storeCredentials()
}

}

由于事情看起来像这样,我想知道放置retry 方法的正确 位置是什么以及如何实现它?因为根据位置我可以获得不同的输入参数。

最佳答案

重试代码必须在第一次尝试之后进行,即 rx_responseJSON 所以您现在设置的方式,它必须在它之后的 flatMap 之间.

关于swift - Alamofire 重试请求 - react 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39138681/

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