为什么我的RxJava observable在它调用的函数完成之前发出结果?

时间:2016-12-01 22:37:19

标签: android rx-java rx-android

在下面的代码中,loadMoreStrings()方法在getLabelsFromServer()完成之前执行它的call()方法。我还在学习RxJava,但我无法让它正常运行。

private void fetchLabels() {
        listObservable = Observable.fromCallable(new Callable<List<String>>() {
            @Override
            public List<String> call() {
                return apiService.getLabelsFromServer();
            }
        }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
        loadMoreStrings();
    }

    @Override
    public void loadMoreStrings() {
        stringListObservable.subscribe(new Action1<List<String>>() {
            @Override
            public void call(List<String> label) {
                myStrings.addAll(label);
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

因为Observable类型是懒惰的,并且在您订阅它之前它不会发出任何项目。

根据您提供的代码,您未订阅listObservable。所以它立即完成,你的loadMoreStrings()方法被调用。