0

我正在尝试使用 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)
4

0 回答 0