RxJava2 中的 "unsafeSubscribe()" 运算符发生了什么?

What happened to "unsafeSubscribe()" operator in RxJava2?

https://rxjava-doc.readthedocs.io/en/latest/What%27s-different-in-2.0/ 中没有提到它,我在编码时在建议中看不到它。不过我可以看到 "safeSubscribe()"。

删除了吗?

在 v1 中,默认的 Observable.subscribe 方法在传入的 Subscriber(称为 SafeSubscriber)上添加了一个安全包装器,以防止某些误用或其他非常规行为(例如崩溃 onErroronCompleted).

这通常是对操作员的惩罚,因此 unsafeSubscribe 被大多数操作员引入和使用。

V2 对 Observer 行为变得更加严格,因为 Reactive Streams 规范禁止崩溃 onNextonErroronComplete 方法。希望人们在实现 Observer 时不会在这些方法中显式崩溃,或者他们只是使用 lambda-subscribe() 方法,默认的安全包装已被删除。所以基本假设变成 Observers 会表现得很好。因此,不再需要 unsafeSubscribe 方法。也是一个 API 更新机会(二进制兼容性在主要版本跳转之间没有强制要求),我们可以出于各种原因选择删除或重命名旧方法。

不幸的是,一些实施者在这方面仍然不可靠,他们期待旧的安全网。为了避免伤害好球员,引入了 safeSubscribe 方法,尽可能优雅地防止这种不当行为。