【问题标题】:RxJs difference between complete and unsubscribe in Observable?在 Observable 中完成和取消订阅之间的 RxJs 区别?
【发布时间】:2018-09-06 07:02:07
【问题描述】:

完成后的事件是否会取消订阅 Observable 或任何其他区别?

【问题讨论】:

标签: angular rxjs


【解决方案1】:

您填写了Observable,并取消订阅了Subscription。这是对两个不同对象的两种不同方法。你订阅了一个 observable,它返回一个 Subscription 对象。

如果您想停止收听来自 Observable 的发射,请致电 subscription.unsubscribe()

如果您想让Observable 完成他的任务,请致电observable.complete()。 (这只存在于Subject 和那些扩展Subject 的人)。 complete 方法本身也会取消订阅任何可能的订阅。

当 Observable 向其观察者发出 OnError 或 OnComplete 通知时,这将结束订阅。观察者不需要发出 Unsubscribe 通知来结束由 Observable 以这种方式结束的订阅。

【讨论】:

  • 您从哪里读到“完整方法本身也会取消订阅任何可能的订阅。”?这是否意味着拥有 2 个订阅并且如果我们完成 Observable 而不取消订阅 2 个 Subscriptions 将为我们处理 unsubscribe() 方法?换句话说,如果我们 complete() Observable,unsubscribe() 是可选的吗?
  • @DiegoOsornio 是的,unsubscribe 是可选的,您可以在 reactivex 合约 documentation 中了解它。我将使用此文档中的引用更新我的答案
  • 最佳解释
【解决方案2】:

如果你完成了一个Observable,它将调用complete() 方法,然后是拆解逻辑和unsubscribe()。 调用unsubscribe() 本身不会调用完整方法。 Angular 异步管道是调用unsubscribe 的一个示例。因此,如果您有完整的方法并使用异步管道,则不会调用它。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2021-11-16
    • 2016-07-07
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2017-12-17
    • 2019-05-10
    相关资源
    最近更新 更多