Nil*_*zor 2 java android rx-java rx-android
所以我有一个A依赖于第二个的异步操作B.怎样使B A A的延续,你不应该用那么功能的Javascript承诺,或与ContinueWith在.NET TPL?
让我们从Android获取一个scenarion,我有两个服务端点:
码:
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);
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
我不希望这两个操作嵌套在代码方面,但是它的格式更像是它的行为 - 顺序.
我一直无法找到关于RxJava/RxAndroid中的Observables的延续.有人可以帮忙吗?
小智 13
我认为你需要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);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |