我是新来Rxjava。我下面的视频教程那里是调用API和使用flatmap得到字符串结果的代码示例。下面是代码:
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()会给出一个列表,并observable.just(N排放)将给予1个排放(列表)。
所以,它意味着第二flatMap被称为N次因为Observable.from()第一flatMap内部发射列表中的每个时间的每个项目。而对于第二flatMap用户的onNext()是(用于第二flatmap的每次调用一次)称为N次呢?
所以,它意味着第二flatMap被称为N次因为Observable.from()第一flatMap内部发射列表中的每个时间的每个项目。
第二平坦映射(.flatMap(new Func1<Top, Observable<String>>() {
)被调用twitch.getTop().size()
次。
和用于第二flatMap订户的onNext()被调用N次太
这是真的。你得到一个可观的,每一个值,每Top
。交付给onNext
值的数量等于Top
s的数量。
这使得第二平面地图有点臃肿。你还不如一个map
到Top
String
。
无关:您可能希望找到一个更近的教程。 RxJava1死了差不多一年前。
RxJava 1.x中现已正式结束寿命(EOL)。没有进一步发展,错误修正,提高,javadoc的变化或维护将在本项目1.3.8版本后,后[2018年3月31日]提供和。
我们鼓励用户migrate to 2.x。按照,维基将在未来几个月内进行更新,以描述2.x的功能和属性。