我是angular4的初学者,并试图理解可观察和订阅的概念。
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),我们可以通过订阅它直接调用服务。
我的问题是,我们应该在什么时候使用(在哪个场景中)变量,比如
private subscription: Subscription; 哪一种是最佳做法?
任何帮助/博客/文章都是值得赞赏的。
谢谢
发布于 2018-04-24 06:29:11
Subscription类型有一个名为unsubscribe的函数。您需要使用unsubscribe手动完成可观察的(在大多数情况下是无限流时)。如果“可观测”未完成,则可观测到的流将不会关闭,内存泄漏也将发生。您可以在ngOnDestroy生命周期事件中编写取消订阅,并在组件销毁时取消订阅所有可观察到的内容。
对于HTTP请求,它们是在响应返回后自动完成的,因此您不需要在HTTP中使用unsubscribe。
您还可以检查何时取消订阅(角)。
发布于 2018-04-24 06:37:13
RxJs库是基于可观测模式的--在这种模式中,您可以一直监视源,比如更改或生成新值。股票价值不断变化或不断传递新价值的股票指数。
所以根据可观察到的模式
可观察到的-是源程序,它不断地向您的程序发送值,程序将侦听和处理它。
-是对您可观察到的发送值的订阅,通过订阅您指示程序是来自源的列表值,在这种情况下,您还处理即将出现的值。
如果您理解Observable pattern,您可以更清楚地理解事物。
要回答您的问题,这是您需要的,当您想要管理您自己下标,即在您的代码。
在订阅令牌的帮助下,您可以将代码与可观察到的代码分离开来,也就是说,如果您不希望从可观察到的源中获得更多的价值,则应该通过调用取消订阅方法来停止使用订阅。
文章:角:别忘了取消订阅()帮助您理解令牌。
从源取消订阅不要避免内存泄漏。
https://stackoverflow.com/questions/49994733
复制相似问题