【发布时间】:2019-07-05 12:53:58
【问题描述】:
我是 Rxjava 的新手。我正在关注一个视频教程,其中有一个调用 API 并使用平面图获取字符串结果的代码示例。下面是代码:
twitchAPI.getTopGamesObservable()
.flatMap(new Func1<Twitch, Observable<Top>>() {
@Override
public Observable<Top> call(Twitch twitch) {
Observable<Top> rtnTop = Observable.from(twitch.getTop());
Log.d("LogRx", "Size for FROM:" + "\n");
return rtnTop;
}
})
.flatMap(new Func1<Top, Observable<String>>() {
@Override
public Observable<String> call(Top top) {
Log.d("LogRx", "Size for JUST:" + "\n");
return Observable.just(top.getGame().getName());
}
})
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<String>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) { }
@Override
public void onNext(String s) { Log.d("LogRx", s); }
});
但我并没有真正理解这段代码如何工作的顺序。
混淆是因为 observable.from() 和 observable.just()。我知道 observable.from() 将为列表提供 N 个排放量,而 observable.just() 将提供 1 个排放量(一个列表)。
那么,这是否意味着第二个 flatMap 被调用了 N 次,因为第一个 flatMap 内的 Observable.from() 每次都会发出列表中的每个项目。对于第二个平面图,订阅者的 onNext() 也被调用 N 次(每次调用第二个平面图一次)?
【问题讨论】:
标签: android rx-java rx-android