为啥使用 responseWith 方法?

Posted

技术标签:

【中文标题】为啥使用 responseWith 方法?【英文标题】:Why use the responseWith method?为什么使用 responseWith 方法? 【发布时间】:2019-07-06 18:05:49 【问题描述】:

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

【问题讨论】:

请阅读How to Ask。您的标题提供的关于您的问题的信息几乎为零。 【参考方案1】:

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

【讨论】:

以上是关于为啥使用 responseWith 方法?的主要内容,如果未能解决你的问题,请参考以下文章

053_Servlet——resp.getWrite()与resp.getPrint()的区别?

Redis底层协议RESP详解

使用 gcc (resp. MinGW) 编译器的 C 中函数的参数数量是不是有上限?

如何在观察实时数据的值时修复“resp”的空指针

关于vue+Spring框架中,Javascript判断resp.data是否为空的问题

jQuery中异步问题:数据传递