订阅在服务调用中的重要性:Angular 2/4

significance of subscription in service call : Angular 2/4

我是 angular4 的初学者,正在尝试理解 observable 和 subscription 的概念。

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; 

最佳做法是什么?

任何 help/blog/article 都将是可观的。

谢谢

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

HTTP请求呢,返回response后自动完成,所以HTTP请求不需要使用unsubscribe

您还可以检查When to Unsubscribe in Angular

RxJs 库基于 Observable pattern - 在这种模式下,您会一直关注源,例如更改或生成新值。股票价值不断变化或不断发送新价值的股票指数。

所以根据 Observable 模式

Observable - 是不断向您的程序发送值的来源,您的程序将监听并处理它。

订阅 - 订阅你的可观察值,它会向你发送价值,通过订阅你表明你的程序列出了来自源的价值,在这种情况下你也正在处理的价值。

如果你理解了Observable pattern,你会更清楚地理解事情。


回答你的问题Subscription 当你想自己管理你的下标时,你需要这个,即在你的代码中。

在订阅令牌的帮助下,您可以将您的代码与 observable 分离,即如果您不想从 observable 获得更多价值,即您应该通过调用 unsubscribe 方法停止使用订阅。

文章:Angular: Don't forget to unsubscribe()帮助您理解token。

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