为什么要使用responseWith方法?

时间:2019-07-06 18:05:49

标签: swift rxalamofire

在阅读RXAlamofire源代码的过程中,有一个我不太了解的地方。

由于此方法是创建DataRequest的可观察对象,所以为什么要调用responseWith方法?

func request<R: RxAlamofireRequest>(_ createRequest: @escaping (SessionManager) throws -> R) -> Observable<R> {
        return Observable.create { observer -> Disposable in
            let request: R
            do {
                request = try createRequest(self.base)
                observer.on(.next(request))


                request.responseWith(completionHandler: { response in
                    if let error = response.error {
                        observer.on(.error(error))
                    } else {
                        observer.on(.completed)
                    }
                })

                if !self.base.startRequestsImmediately {
                    request.resume()
                }

                return Disposables.create {
                    request.cancel()
                }
            } catch {
                observer.on(.error(error))
                return Disposables.create()
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我相信RXAlamofire的作者将其用作惯例。如果在那儿查看请求implementation,则所有请求方法都将返回方法responseXYZ的结果。响应方法通常会执行请求并以某种方式(JSON,String等)进行响应。听起来有点令人困惑,但有点像此请求,某些数据会以某种方式进行响应。