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

Android 为什么我的RxJava observable在它调用的函数完成之前发出一个结果?,android,rx-java,rx-android,Android,Rx Java,Rx Android,在下面的代码中,loadMoreStrings()方法是在getLabelsFromServer()完成之前执行其call()方法。我还在学习RxJava,但我就是不能让它正常运行 private void fetchLabels() { listObservable = Observable.fromCallable(new Callable<List<String>>() { @Override publ

在下面的代码中,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);
            }
        });
    }
private void fetchLabels(){
listObservable=Observable.fromCallable(newCallable(){
@凌驾
公共列表调用(){
返回apiService.getLabelsFromServer();
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
loadMoreStrings();
}
@凌驾
公共void loadMoreStrings(){
stringListObservable.subscribe(新操作1(){
@凌驾
公共作废调用(列表标签){
myStrings.addAll(标签);
}
});
}

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


根据您提供的代码,您没有订阅
listObservable
。因此它会立即完成,并且会调用您的
loadMoreStrings()
方法。

因为
Observable
类型是惰性的,在您订阅它之前,它不会发出任何项


根据您提供的代码,您没有订阅
listObservable
。因此它立即完成,您的
loadMoreStrings()
方法被调用。

它在loadMoreStrings()方法中被订阅。如果
listObservable
stringListObservable
相同,并且您得到一个
onNext()
调用,那么它工作正常,否则您将得到
onCompleted()
onError()
它是在loadMoreStrings()方法中订阅的。如果
listObservable
stringListObservable
是相同的,并且您得到一个
onNext()
调用,那么它工作正常,因为否则您将得到
onCompleted()
onError()