不理解Observable.from和Observable.just在RxJava

问题描述 投票:0回答:1

我是新来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次呢?

android rx-java rx-android
1个回答
0
投票

所以,它意味着第二flatMap被称为N次因为Observable.from()第一flatMap内部发射列表中的每个时间的每个项目。

第二平坦映射(.flatMap(new Func1<Top, Observable<String>>() {)被调用twitch.getTop().size()次。

和用于第二flatMap订户的onNext()被调用N次太

这是真的。你得到一个可观的,每一个值,每Top。交付给onNext值的数量等于Tops的数量。

这使得第二平面地图有点臃肿。你还不如一个mapTop String


无关:您可能希望找到一个更近的教程。 RxJava1死了差不多一年前。

RxJava 1.x中现已正式结束寿命(EOL)。没有进一步发展,错误修正,提高,javadoc的变化或维护将在本项目1.3.8版本后,后[2018年3月31日]提供和。

我们鼓励用户migrate to 2.x。按照,维基将在未来几个月内进行更新,以描述2.x的功能和属性。

来源:https://github.com/ReactiveX/RxJava/releases/tag/v1.3.8

© www.soinside.com 2019 - 2024. All rights reserved.