如何使用RxJava可观察对象进行延续?
所以我有一个异步操作如何使用RxJava可观察对象进行延续?,java,android,rx-java,rx-android,Java,Android,Rx Java,Rx Android,所以我有一个异步操作A,它依赖于第二个B。我如何使B成为a的延续,就像您使用Javascript Promissions函数或.NET TPL中的函数一样 让我们看一下Android的场景,我有两个服务端点: 一个用于获取图像的URL 一个用于获取图像本身 代码: private void loadImage(最终图像视图){ 可观察的stringObs=getImageUrlAsync(); stringObs.subscribe(新操作1(){ @凌驾 公共无效调用(字符串imageUr
A
,它依赖于第二个B
。我如何使B成为a的延续,就像您使用Javascript Promissions函数或.NET TPL中的函数一样
让我们看一下Android的场景,我有两个服务端点:
- 一个用于获取图像的URL
- 一个用于获取图像本身
private void loadImage(最终图像视图){
可观察的stringObs=getImageUrlAsync();
stringObs.subscribe(新操作1(){
@凌驾
公共无效调用(字符串imageUrl){
//第一个异步操作完成
可观察的bitmapObs=getBitmapAsync(imageUrl);
订阅(新操作1(){
@凌驾
公共无效调用(位图图像){
//第二个异步操作完成
设置图像位图(图像);
}
});
}
});
}
我不希望将这两个操作嵌套在代码中,而是采用一种更像是按顺序执行的格式
我在RxJava/RxAndroid中找不到任何关于可观测的连续性的东西。有人能帮忙吗 我想你需要API
例如:
Observable.create(新建Observable.OnSubscribe()){
@凌驾
公用无效呼叫(用户)
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);
}
});
}
});
}
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);
}
});