从回调 API 到可观察流:RxJava 的应用与优化
1. 冷热源的时间依赖区别
热源和冷源之间一个有趣的区别是时间依赖性。冷 Observable 按需生成值,并且可能多次生成,因此创建项的确切时刻无关紧要。相反,热 Observable 表示外部源产生的事件,这意味着给定值生成的瞬间非常重要,因为它将事件置于时间轴上。
2. 从回调 API 到可观察流的需求
大多数 Java API(如 JDBC、java.io、servlet3 以及专有解决方案)都是阻塞的,这意味着客户端线程必须等待结果或副作用。然而,有些用例本质上是异步的,例如从外部源推送事件。我们可以按以下方式构建一个阻塞流 API:
while(true) {
Event event = blockWaitingForNewEvent();
doSomethingWith(event);
}
在异步场景中,通常会使用基于回调的 API,例如 JavaScript 中常见的情况。但回调存在嵌套问题,导致协调多个回调变得几乎不可能,形成“回调地狱”。例如以下嵌套四层的回调示例:
button.setOnClickListener(view -> {
MyApi.asyncRequest(response -> {
Thread thread = new Thread(() -> {
int year = datePicker.getYear(
超级会员免费看
订阅专栏 解锁全文
1140

被折叠的 条评论
为什么被折叠?



