首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RxAlamofire取消网络请求

RxAlamofire取消网络请求
EN

Stack Overflow用户
提问于 2018-03-14 06:33:24
回答 2查看 1.6K关注 0票数 0

下面是RxAlamofire网络请求的示例代码。我的问题是,每当被解职时,我都想取消这个请求。

我试图将此请求分配给全局变量,但requestJSON方法返回Observable<(HTTPURLResponse, Any)>类型。

是否有一种方法来处理此请求时,视图控制器被解雇?

代码语言:javascript
运行
复制
RxAlamofire.requestJSON(.get, sourceStringURL)
            .debug()
            .subscribe(onNext: { [weak self] (r, json) in
                if let dict = json as? [String: AnyObject] {
                    let valDict = dict["rates"] as! Dictionary<String, AnyObject>
                    if let conversionRate = valDict["USD"] as? Float {
                        self?.toTextField.text = formatter
                            .string(from: NSNumber(value: conversionRate * fromValue))
                    }
                }
                }, onError: { [weak self] (error) in
                    self?.displayError(error as NSError)
            })
            .disposed(by: disposeBag)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-14 08:48:49

如果您查看RxAlamofire的代码:https://github.com/RxSwiftCommunity/RxAlamofire/blob/8a4856ddd77910950aa2b0f9e237e0209580503c/Sources/RxAlamofire.swift#L434

在释放订阅时,您将看到请求被取消。

因此,只要您的视图控制器被释放(和它的处置袋与它!)当然,当你驳回请求时,如果它还没有完成的话,它就会被取消。

票数 3
EN

Stack Overflow用户

发布于 2018-03-14 16:45:45

正如Valérian所指出的,当您的ViewController被取消时,它和它的所有属性都将被取消分配(如果保留计数下降到0,即)。

特别是,当disposeBag属性被解除分配时,将对添加到此包中的所有可观察序列调用dispose()。反过来,它将在request.cancel()实现中调用RxAlamofire。

如果您需要更早地取消您的请求,您可以直接尝试不使用disposeBag

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49271118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档