【发布时间】:2018-12-22 07:02:12
【问题描述】:
我在我正在使用的 Android 应用程序中使用 RxJava。我想知道当我取消订阅 Observable 链时会发生什么。
假设我指的是以下可观察链:
sourceObservable
.map { ... }
.doOnNext { ... }
.flatMap { ... }
我看到了 3 个可能的答案:
当我取消订阅时,源 observable 停止,即 sourceObservable 停止发射项目。最后一个发出的项目沿着链向下直到它结束。它会导致每个操作员触发。
当我取消订阅时,源 observable 停止。最后发出的项目不会关闭,但它当前正在经历的操作员(比如
doOnNext)被允许完成。当我取消订阅时,源 observable 停止并且根本不再执行任何代码。这意味着假设我正在使用
doOnNext,doOnNext中的代码将停止在它所在的位置并且不允许完成。
其中哪一个(如果有的话)是正确的?答案是否取决于源 observable 是热的还是冷的?关于运营商?
【问题讨论】: