RxAlamofire重试不起作用

时间:2016-12-15 22:41:23

标签: swift rx-swift rxalamofire

我正在尝试将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)

0 个答案:

没有答案