棱角分明 – 我应该取消订阅Cold Observable吗?
发布时间:2020-12-17 18:10:01 所属栏目:安全 来源:网络整理
导读:我知道取消订阅Observable以防止内存泄漏是一种很好的做法. 但如果它是Cold Observable,我还应该取消订阅吗? 例如,由Http.get()返回的一个 解决方法 你不需要这样做因为HTTP observable在动作完成后立即调用完成. 从源代码sources我可以看到在取消订阅时调
我知道取消订阅Observable以防止内存泄漏是一种很好的做法.
但如果它是Cold Observable,我还应该取消订阅吗? 例如,由Http.get()返回的一个 解决方法
你不需要这样做因为HTTP observable在动作完成后立即调用完成.
从源代码sources我可以看到在取消订阅时调用错误和完成. protected _error(err: any): void { this.destination.error(err); this.unsubscribe(); } protected _complete(): void { this.destination.complete(); this.unsubscribe(); } 我进一步做了一个小实验,添加了取消订阅超时 var subscription = this.http.get(`apiurl`) .subscribe(response => { setTimeout(function(){ debugger; subscription.unsubscribe(); },30); }); 如果我介入取消订阅 Subscriber.prototype.unsubscribe = function () { if (this.closed) { // this.closed is true return; } this.isStopped = true; _super.prototype.unsubscribe.call(this); }; 然后this.closed == true,这意味着之前调用了取消订阅. 所以是的,现在我可以肯定地说你不需要取消订阅:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap – 如何删除响应功能在Twitter Bootstra
- Bootstrap 学习之(六)------ 字体图标
- axis和xfire以及CXF三种方式实现WebServices分别有什么优缺
- angularjs – 控制器启动两次
- angularjs解决方案之 解析表达式
- scala – 在CRUD Web应用程序中使用Akka演员
- 为什么是 ‘.’ Unix中的硬链接?
- angularjs – 如何在Angular2中显示和隐藏带有复选框元素的
- shell配置java环境变量和批处理配置环境变量
- Play Framework&Scala:单元测试中FakeRequest和JSON P