【问题标题】:Do I need to unsubscribe manually? - Angular 8 [duplicate]我需要手动取消订阅吗? - Angular 8 [重复]
【发布时间】:2020-07-23 15:35:40
【问题描述】:

我有一个简单的问题。 我是否需要手动取消订阅,或者 Angular 正在为我取消订阅,或者如果不知道发生了什么?

谢谢。

【问题讨论】:

  • 您必须手动取消订阅
  • @Supercool - 谢谢

标签: angular observable angular8 subscribe


【解决方案1】:

是的,在很多情况下。如果不这样做,可能会导致内存泄漏。例如,订阅 ngOnInt() 中的 observable 并在组件中取消订阅 ngOnDestroy() 是很正常的。

如前所述,您不必总是手动取消订阅,例如在使用某些特定运算符(如 take)时。如果您在模板中使用async,则无需手动取消订阅。此外,注册一次的服务也不需要取消订阅 Observables。

【讨论】:

    【解决方案2】:

    如果您使用async 管道,Angular 会在组件生命周期内为您处理订阅、订阅和取消订阅。

    如果你在一个组件中订阅了,如果 observable 没有完成,你需要取消订阅。

    这是一个非常 SO 主题的帖子(双关语!)。

    【讨论】:

      【解决方案3】:

      是的,您需要取消订阅,但有一些例外情况,例如 route 相关的 observable。

      您可以在这里找到不同的退订方式https://blog.bitsrc.io/6-ways-to-unsubscribe-from-observables-in-angular-ab912819a78f

      【讨论】:

        【解决方案4】:

        我在大多数情况下 - 是的。当您订阅时,您几乎必须随时取消订阅。但也有一些例外情况您不必这样做,例如订阅 http 服务。

        【讨论】:

          猜你喜欢
          • 2022-01-02
          • 1970-01-01
          • 1970-01-01
          • 2019-02-11
          • 2018-04-05
          • 2020-05-30
          • 2020-02-15
          • 2017-05-12
          • 1970-01-01
          相关资源
          最近更新 更多