在阅读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()
}
}
}
答案 0 :(得分:0)
我相信RXAlamofire的作者将其用作惯例。如果在那儿查看请求implementation,则所有请求方法都将返回方法responseXYZ的结果。响应方法通常会执行请求并以某种方式(JSON,String等)进行响应。听起来有点令人困惑,但有点像此请求,某些数据会以某种方式进行响应。