我正在尝试将RxAlamofire与retry()
一起使用,但我无法使其正常工作。我试图将retry()
块添加到不同的位置,但它没有任何区别。
如果我将retry(3)
添加到apiClient.get(type: .posts).retry(3)
的末尾,它似乎可行。有没有办法将重试逻辑添加到ApiClient
类?感谢。
class ApiClient {
var baseURL:String
init(baseURL:String) {
self.baseURL = baseURL
}
func get(type:ApiType) -> Observable<[Post]>{
return RxAlamofire
.request(.get, baseURL + "/someurl") //doesn't exist
.flatMap {
$0.validate(statusCode: 200..<300)
.rx.json()
}.retry(3)
.map{(data) -> [Post] in
var posts = [Post]()
// parse it
return posts
}
}
}
let apiClient = ApiClient(baseURL: "https://jsonplaceholder.typicode.com")
apiClient.get(type: .posts)
.subscribe(onNext: { [weak self] posts in
self?.objects = posts
self?.tableView.reloadData()
}, onError: { error in
print(error)
}).addDisposableTo(disposablebag)