Angular 5:主题需要取消订阅吗?

时间:2018-04-01 17:13:58

标签: angular rxjs

我正在查看an example from the angular tour of heroes tutorial,其中Subject用于在搜索时添加去抖时间。

但是,代码不包含任何类型的取消订阅组件销毁。这里不需要取消订阅吗?为什么?如果需要,这样做的正确形式是什么?

感谢。

3 个答案:

答案 0 :(得分:2)

在这种情况下您不需要取消订阅,因为您实际上并未直接订阅它 - 在组件中没有调用订阅。它只是将生成的observable传递给async管道,它可以完成所有清理工作。

答案 1 :(得分:1)

想象一下订阅意味着你需要一些关于内存的引用(pointer),它告诉 angular 你必须检查一系列事件。
那是subscribe做的......  所以当你完成你的流时,你会有一个指向你无法使用的东西的指针,因为你的组件被破坏了,被称为memory leak。 在此示例中,它只是将主题传递给异步管道。没有subscription

答案 2 :(得分:0)

有(2)种Observables - 有限值和无限值。

http Observables生成有限(1)值,类似于DOM事件监听器,Observables生成无限值。

如果您手动调用subscribe(不使用异步管道),则取消订阅无限的Observable。

不要担心有限的,RxJ会照顾它们。

为我查看此答案的详细信息:

Angular/RxJs When should I unsubscribe from `Subscription`