我正在查看an example from the angular tour of heroes tutorial,其中Subject
用于在搜索时添加去抖时间。
但是,代码不包含任何类型的取消订阅组件销毁。这里不需要取消订阅吗?为什么?如果需要,这样做的正确形式是什么?
感谢。
答案 0 :(得分:2)
在这种情况下您不需要取消订阅,因为您实际上并未直接订阅它 - 在组件中没有调用订阅。它只是将生成的observable传递给async管道,它可以完成所有清理工作。
答案 1 :(得分:1)
想象一下订阅意味着你需要一些关于内存的引用(pointer
),它告诉 angular 你必须检查一系列事件。
那是subscribe
做的......
所以当你完成你的流时,你会有一个指向你无法使用的东西的指针,因为你的组件被破坏了,被称为memory leak
。
在此示例中,它只是将主题传递给异步管道。没有subscription
答案 2 :(得分:0)
有(2)种Observables - 有限值和无限值。
http Observables生成有限(1)值,类似于DOM事件监听器,Observables生成无限值。
如果您手动调用subscribe(不使用异步管道),则取消订阅无限的Observable。
不要担心有限的,RxJ会照顾它们。
为我查看此答案的详细信息: