不理解 RxJava 中的 Observable.from 和 Observable.just
Not understanding Observable.from and Observable.just in RxJava
我是 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 次(每次调用第二个平面图一次)?
So, does it mean that the second flatMap is called N times because Observable.from() inside the first flatMap is emitting each item in the list each time.
第二个平面图(.flatMap(new Func1<Top, Observable<String>>() {
)被调用twitch.getTop().size()
次。
And for the second flatMap the onNext() of subscriber is called N times too
这是事实。根据 Top
,你得到一个可观察值,每个都有一个值。传递给 onNext
的值的数量等于 Top
的数量。
这让第二张平面地图有点臃肿。你不妨 map
一个 Top
到 String
.
无关:您可能想查找更新的教程。 RxJava1 差不多一年前就死了。
RxJava 1.x is now officially end-of-life (EOL). No further developments, bugfixes, enhancements, javadoc changes or maintenance will be provided by this project after version 1.3.8 and after [31 Mar 2018].
Users are encouraged to migrate to 2.x. In accordance, the wiki will be updated in the coming months to describe 2.x features and properties.
我是 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 次(每次调用第二个平面图一次)?
So, does it mean that the second flatMap is called N times because Observable.from() inside the first flatMap is emitting each item in the list each time.
第二个平面图(.flatMap(new Func1<Top, Observable<String>>() {
)被调用twitch.getTop().size()
次。
And for the second flatMap the onNext() of subscriber is called N times too
这是事实。根据 Top
,你得到一个可观察值,每个都有一个值。传递给 onNext
的值的数量等于 Top
的数量。
这让第二张平面地图有点臃肿。你不妨 map
一个 Top
到 String
.
无关:您可能想查找更新的教程。 RxJava1 差不多一年前就死了。
RxJava 1.x is now officially end-of-life (EOL). No further developments, bugfixes, enhancements, javadoc changes or maintenance will be provided by this project after version 1.3.8 and after [31 Mar 2018].
Users are encouraged to migrate to 2.x. In accordance, the wiki will be updated in the coming months to describe 2.x features and properties.