-1

在阅读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()
            }
        }
    }
4

1 回答 1

0

我相信 RXAlamofire 的作者将此作为他们的惯例。如果你看那里的请求实现所有的请求方法都返回一个方法responseXYZ的结果。响应方法通常执行请求并响应某些内容(JSON、String 等)。听起来有点令人困惑,但它有点像这个请求,一些数据会响应某些内容。

于 2019-07-06T20:36:33.103 回答