2016-12-01 18 views
1

以下のコードでは、loadMoreStrings()メソッドはgetLabelsFromServer()が完了する前にcall()メソッドを実行しています。私はまだRxJavaを学んでいますが、これを正しく実行することはできません。私の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); 
      } 
     }); 
    } 

答えて

0

Observableタイプは怠惰であり、あなたがそれに加入するまでの任意の項目を放出するつもりはないので。

あなたが提供したコードから、あなたはlistObservableに登録していません。これですぐに完了し、loadMoreStrings()メソッドが呼び出されます。

+0

これはloadMoreStrings()メソッドに登録されています。 –

+0

'listObservable'と' stringListObservable'が同じで、 'onNext()'呼び出しを受け取った場合、正しく動作します。そうでないと、 'onCompleted()'または 'onError()' –

関連する問題