使用 ReactiveX 进行渐进式图像加载

Progressive image loading with ReactiveX

我正在尝试加载缩小尺寸的 preview 图片,然后是 hires 图片。我想确保如果有任何机会先加载 hires 图像,则丢弃 preview 图像。

考虑以下示例,其中:

.

Example 1:

 1    ------P-------
 2    ---------H----

 3    ------P--H----

 4    ------*--*----


Example 2:

 1   ----H---------
 2   --------P-----

 3   ----H|--------

 4   ----*|--------

到目前为止我想出的唯一解决方案是保存一个状态变量,该变量表示是否已经加载了雇员并使用 takeWhile,但这需要一些非优雅的操作并且还涉及侧面效果。

我正在寻找正确的 RX 方式。

你可以在不保存状态和使用变量的情况下做到这一点:

Observable<Bitmap> hiresObservable = getHiresObservable()
        .share()
Observable<Bitmap> previewObservable = getPreviewObservable()
        .takeUntil(hiresObservable);


Observable.merge(previewObservable, hiresObservable)
      .subscribe(bitmap -> {
           //do something with the bitmap
      });

这与非常相似。