繁体   English   中英

你如何使用RxJava Observables继续?

[英]How do you do continuations with RxJava Observables?

所以我有一个依赖于第二个B异步操作A 怎样使B A A的延续,你不应该用那么功能的Javascript承诺,或与ContinueWith在.NET TPL?

让我们从Android获取一个scenarion,我有两个服务端点:

  • 一个用于获取图像的URL
  • 一个用于获取图像本身

码:

private void loadImage(final ImageView imageView) {
    Observable<String> stringObs = getImageUrlAsync();
    stringObs.subscribe(new Action1<String> () {
        @Override
        public void call(String imageUrl) {
            // First async operation done
            Observable<Bitmap> bitmapObs = getBitmapAsync(imageUrl);
            bitmapObs.subscribe(new Action1<Bitmap>() {
                @Override
                public void call(Bitmap image) {
                    // second async operation done
                    imageView.setImageBitmap(image);
                }
            });
        }
    });
}

希望这两个操作嵌套在代码方面,但是它的格式更像是它的行为 - 顺序。

我一直无法找到关于RxJava / RxAndroid中的Observables的延续。 有人可以帮忙吗?

我认为你需要API flatMap

例如:

Observable.create(new Observable.OnSubscribe<String>() {
        @Override
        public void call(Subscriber<? super String> subscriber) {
            subscriber.onNext("imageUrl");
        }
    }).flatMap(new Func1<String, Observable<Bitmap>>() {
        @Override
        public Observable<Bitmap> call(String imageUrl) {
            return getBitmapAsync(imageUrl);
        }
    }).subscribe(new Action1<Bitmap>() {
        @Override
        public void call(Bitmap o) {
            imageView.setImageBitmap(image);
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM