【问题标题】:Result of call to 'subscribe(onNext:onError:onCompleted:onDisposed:)' is unused调用 'subscribe(onNext:onError:onCompleted:onDisposed:)' 的结果未使用
【发布时间】:2020-02-14 14:13:18
【问题描述】:

我正在尝试使用 RxAlamofire 创建返回 Observable 的函数:

func getResponse(credentialData: Credentials, ulr: String)->Observable<(HTTPURLResponse, Any)>{
        let credentialData = "\(credentialData.username):\(credentialData.password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
        let base64Credentials = credentialData.base64EncodedString()
        let headers = ("Authorization", "Basic \(base64Credentials)")
        let header = HTTPHeaders.init(dictionaryLiteral: headers)

        return Observable.create{ observer in
            requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
            .subscribe(onNext: { response in
                observer.onNext(response)
                } ,
        onError: { error in
            observer.onError(error)
            })
        return Disposables.create()
        }
    }    
}

但我收到以下警告:-

调用 'subscribe(onNext:onError:onCompleted:onDisposed:)' 的结果 没用过

如何解决?添加.disposed(by: disposeBag) 后,我的功能不起作用。

【问题讨论】:

    标签: swift rx-swift rxalamofire


    【解决方案1】:

    您好,您必须将您的请求添加到DisposeBag:

    return Observable.create { observer in
            requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
                .subscribe(onNext: { response in
                    observer.onNext(response)
                }, onError: { error in
                    observer.onError(error)
                }).disposed(by: disposeBag)
            return Disposables.create()
        }
    

    应该可以的。

    【讨论】:

    • 函数 getResponse 不返回任何东西,当我喜欢你的例子时
    • 你能提供一个使用 getResponse 的例子吗?
    • let aPIManager = APIManager() aPIManager.getResponse(credentialData: credentials, ulr: "https://api.github.com/authorizations").subscribe{response in /*code*/ } 这里没有发出 observable
    • 我认为你的问题和你的问题一样,你也应该添加到DisposeBagaPIManager.getResponse(credentialData: credentials, ulr: "api.github.com/authorizations").subscribe {response in /*code*/ }.disposed(by: disposeBag)
    • 好的,我将它添加到DisposeBag,但在subscribe {response in /*code*/ } 中没有人发出
    猜你喜欢
    • 2018-09-06
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多