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
)上添加了一个安全包装器,以防止某些误用或其他非常规行为(例如崩溃 onError
和 onCompleted
).
这通常是对操作员的惩罚,因此 unsafeSubscribe
被大多数操作员引入和使用。
V2 对 Observer
行为变得更加严格,因为 Reactive Streams 规范禁止崩溃 onNext
、onError
和 onComplete
方法。希望人们在实现 Observer
时不会在这些方法中显式崩溃,或者他们只是使用 lambda-subscribe()
方法,默认的安全包装已被删除。所以基本假设变成 Observer
s 会表现得很好。因此,不再需要 unsafeSubscribe
方法。也是一个 API 更新机会(二进制兼容性在主要版本跳转之间没有强制要求),我们可以出于各种原因选择删除或重命名旧方法。
不幸的是,一些实施者在这方面仍然不可靠,他们期待旧的安全网。为了避免伤害好球员,引入了 safeSubscribe
方法,尽可能优雅地防止这种不当行为。
https://rxjava-doc.readthedocs.io/en/latest/What%27s-different-in-2.0/ 中没有提到它,我在编码时在建议中看不到它。不过我可以看到 "safeSubscribe()"。
删除了吗?
在 v1 中,默认的 Observable.subscribe
方法在传入的 Subscriber
(称为 SafeSubscriber
)上添加了一个安全包装器,以防止某些误用或其他非常规行为(例如崩溃 onError
和 onCompleted
).
这通常是对操作员的惩罚,因此 unsafeSubscribe
被大多数操作员引入和使用。
V2 对 Observer
行为变得更加严格,因为 Reactive Streams 规范禁止崩溃 onNext
、onError
和 onComplete
方法。希望人们在实现 Observer
时不会在这些方法中显式崩溃,或者他们只是使用 lambda-subscribe()
方法,默认的安全包装已被删除。所以基本假设变成 Observer
s 会表现得很好。因此,不再需要 unsafeSubscribe
方法。也是一个 API 更新机会(二进制兼容性在主要版本跳转之间没有强制要求),我们可以出于各种原因选择删除或重命名旧方法。
不幸的是,一些实施者在这方面仍然不可靠,他们期待旧的安全网。为了避免伤害好球员,引入了 safeSubscribe
方法,尽可能优雅地防止这种不当行为。