gpt4 book ai didi

java - 你如何使用 RxJava Observables 进行延续?

转载 作者:太空狗 更新时间:2023-10-29 15:34:43 33 4
gpt4 key购买 nike

所以我有一个异步操作 A 依赖于第二个 B。我如何使 B 成为 A 的延续,就像您对 then 所做的那样函数 Javascript Promises,或使用 ContinueWith在 .NET TPL 中?

让我们从 Android 中取一个场景,我有两个服务端点:

  • 一个用于获取图像的 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);
}
});

关于java - 你如何使用 RxJava Observables 进行延续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107000/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com