我们是否需要取消订阅Observable?我们什么时候需要使用取消订阅?
我读了一篇关于使用firebase.auth检查用户登录状态的angularfire2文章。在代码的最后,他取消了auth.subscribe的订阅。 https://javebratt.com/angularfire2-email-auth/(请参阅app.component.ts)。
我真的很困惑,因为我认为Observable会在完成或出错后“取消订阅”。
Do we need to unsubscribe from observable that completes/errors-out? 和 Do you need to unsubscribe from Angular 2 http calls to prevent memory leak?
答案 0 :(得分:2)
关于取消订阅??
或Any
通知,您是正确的。
我认为关键是getAuth()
method in auth.ts
中的评论:
请通过订阅auth服务异步观察实际的authState:af.auth.subscribe()
因此,您应订阅complete
,以便在实际error
更改时收到通知。这意味着它没有完成(类似于af.auth.subscribe(...)
),您必须手动取消订阅。
答案 1 :(得分:1)
嗯,complete
和error
事件不仅取消订阅Observable,而且实际上是取消订阅的proper way。
本文中列出的完成vs取消订阅的优点是:
complete
事件编写任何“完成/清理”代码(没有unsubscribe
事件)答案 2 :(得分:0)
我也得到了作者的回答:
Jorge Vergara
您不需要(执行取消订阅())。我这样做是因为我只希望observable在app启动时将人们发送到那些页面,如果我要记录我的用户或在auth中做一些更改我不希望观察者启动并在某处重定向我的用户。