Android 为什么我的RxJava observable在它调用的函数完成之前发出一个结果?
在下面的代码中,loadMoreStrings()方法是在getLabelsFromServer()完成之前执行其call()方法。我还在学习RxJava,但我就是不能让它正常运行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
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()