首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >订阅在服务呼叫中的意义:角2/4

订阅在服务呼叫中的意义:角2/4
EN

Stack Overflow用户
提问于 2018-04-24 06:24:25
回答 2查看 770关注 0票数 0

我是angular4的初学者,并试图理解可观察和订阅的概念。

代码语言:javascript
复制
export class MyComponent implements OnInit {

    private subscription: Subscription 

    ngOnInit() {

      // case -1 -> service call 1 with subscription     

      this.subscription = this.service1.method1().subscribe(() => {});

     // case-2 -> service call 2 without subscription 

     this.service1.method2().subscribe(() => {});

    }  

现在,很多时候我们不需要使用this.subscription (case-2),我们可以通过订阅它直接调用服务。

我的问题是,我们应该在什么时候使用(在哪个场景中)变量,比如

代码语言:javascript
复制
private subscription: Subscription; 

哪一种是最佳做法?

任何帮助/博客/文章都是值得赞赏的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-24 06:29:11

Subscription类型有一个名为unsubscribe的函数。您需要使用unsubscribe手动完成可观察的(在大多数情况下是无限流时)。如果“可观测”未完成,则可观测到的流将不会关闭,内存泄漏也将发生。您可以在ngOnDestroy生命周期事件中编写取消订阅,并在组件销毁时取消订阅所有可观察到的内容。

对于HTTP请求,它们是在响应返回后自动完成的,因此您不需要在HTTP中使用unsubscribe

您还可以检查何时取消订阅(角)

票数 1
EN

Stack Overflow用户

发布于 2018-04-24 06:37:13

RxJs库是基于可观测模式的--在这种模式中,您可以一直监视源,比如更改或生成新值。股票价值不断变化或不断传递新价值的股票指数。

所以根据可观察到的模式

可观察到的-是源程序,它不断地向您的程序发送值,程序将侦听和处理它。

-是对您可观察到的发送值的订阅,通过订阅您指示程序是来自源的列表值,在这种情况下,您还处理即将出现的值。

如果您理解Observable pattern,您可以更清楚地理解事物。

要回答您的问题,这是您需要的,当您想要管理您自己下标,即在您的代码。

在订阅令牌的帮助下,您可以将代码与可观察到的代码分离开来,也就是说,如果您不希望从可观察到的源中获得更多的价值,则应该通过调用取消订阅方法来停止使用订阅。

文章:角:别忘了取消订阅()帮助您理解令牌。

从源取消订阅不要避免内存泄漏。

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

https://stackoverflow.com/questions/49994733

复制
相关文章

相似问题

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