[RXJava Observable仅当以Observer作为匿名类型订阅时才发出项目

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

当我以匿名类型创建新的Observer时,它工作正常:

Observable<List<Post>> postsListObservable = mApplicationAPI.getPosts();

        postsListObservable.
                subscribeOn(Schedulers.io()).
                observeOn(AndroidSchedulers.mainThread()).subscribe( new Observer<List<Post>>() {

            @Override
            public void onSubscribe(Disposable d) {
                Log.i("ZOKa", "onSubscribe: ");
            }

            @Override
            public void onNext(List<Post> posts) {

                Log.i("ZOKa", "onNext: " + posts.size());
            }

            @Override
            public void onError(Throwable e) {
                Log.i("ZOKa", "onError: " + e.getMessage());
            }

            @Override
            public void onComplete() {
                Log.i("ZOKa", "onComplete: ");

            }
        });

当我将观察者创建为动态类型时,它不会发出数据

Observable<List<Post>> postsListObservable = mApplicationAPI.getPosts();

    postsListObservable.
            subscribeOn(Schedulers.io()).
            observeOn(AndroidSchedulers.mainThread());

    Observer<List<Post>>  observer = new Observer<List<Post>>() {

        @Override
        public void onSubscribe(Disposable d) {
            Log.i("ZOKa", "onSubscribe: ");
        }

        @Override
        public void onNext(List<Post> posts) {

            Log.i("ZOKa", "onNext: " + posts.size());
        }

        @Override
        public void onError(Throwable e) {
            Log.i("ZOKa", "onError: " + e.getMessage());
        }

        @Override
        public void onComplete() {
            Log.i("ZOKa", "onComplete: ");

        }
    };
    postsListObservable.subscribe(observer);

第一个代码段的Logcat:

com.tripleService.basesetupfordi / I / ZOKa:onSubscribe:com.tripleService.basesetupfordi / I / ZOKa:onNext:100:com.tripleService.basesetupfordi / I / ZOKa:onComplete:

第二个的Logcat:

com.tripleService.basesetupfordi / I / ZOKa:onError:null

所以,两者之间的区别是什么?

rx-java2 rx-android
1个回答
1
投票

这是因为运算符返回了新的可观察对象,但是他们没有修改被调用的可观察对象。第二个示例中的subscribeOnobserveOnpostsListObservableobserver没有影响。

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