RxJ在Observable中完成与取消订阅之间的区别?

Sou*_*ras 4 rxjs angular

完成事件后将取消订阅“可观察”或“不可观察”或任何其他区别。

Pie*_*Duc 9

您完成Observable,然后取消订阅Subscription。这是对两个不同对象的两种不同方法。您订阅了一个可观察Subscription对象,该对象返回一个对象。

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

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

当Observable向其观察者发出OnError或OnComplete通知时,这将终止订阅。观察者不需要向以Observable方式终止的结束订阅发出取消订阅通知。

  • @DiegoOsornio,这是真的,“取消订阅”是可选的,您可以在reactivex合约[文档](http://reactivex.io/documentation/contract.html)中阅读它。我将引用该文档更新我的答案 (5认同)
  • 您在哪里读到“完整方法本身也将取消订阅任何可能的订阅。”?这是否意味着拥有 2 个订阅,并且如果我们在不取消订阅的情况下完成“Observable”,这 2 个“订阅”将为我们处理“unsubscribe()”方法?换句话说,如果我们使用“complete()”Observable,“unsubscribe()”是可选的吗? (2认同)

小智 6

如果完成Observable,将调用complete()方法,然后调用拆卸逻辑和unsubscribe()。调用unsubscribe()自身不会调用complete方法。角异步管道是调用的示例unsubscribe。因此,如果您具有完整的方法并使用异步管道,则不会调用它。