2017-06-09 16 views
0

呼び出されることはありません。チェーンはtoList()まで実行されているので、以下の行が実行されています。後で停止します。doOnNext()は、次のチェーンを考えると

poiCollectionToUserGroup -> { 
      Observable<PoiCollection> poiCollectionById = findPoiCollectionById(poiCollectionToUserGroup.getPoiCollectionId()); 
      return poiCollectionById; 
     }) 
poiCollectionById

ブレークポイントとfindPoiCollectionById(...)内側にもう一つはっきり結果が正常にDBからフェッチされている、見ます!

だから、doOnNext(...)は呼び出されないのですか?私は明らかにobservableにsubscribe(...)を呼び出します。マッピングチェーンはtoList()まで実行されます。私はコードがdoOnError(...)に入り込むことは決してなく、Action<Throwable>の部分がsubscribe(...)になったこともありません。 toList()と関係があります。

+0

登録時にonNext()でアイテムを取得していますか? – Ritesh

+0

doOnNext()をtoList()の前に置き、試してみることができます。 – Ritesh

+0

はい、私はそうでもできると思いました。問題は、toList()呼び出しです。しかし、私はリストを作成することができなければなりません。そうでなければ無意味です。 –

答えて

0

これは私が8本当に私がArrayListを作成するために持っていなかった希望ではなく、Javaをcollect(Collectors.toList())方法のような何かを私の質問への答えではありませんが、私の問題を解決

public Observable<List<PoiCollection>> findPoiCollectionsByUserId(Integer userId) { 

    List<PoiCollection> poiCollections = new ArrayList<>(); 

    findUserGroupsByUserId(userId) 
      .flatMap(Observable::from) 
      .flatMap(userGroup -> findPoiCollectionToUserGroupsByUserGroupId(userGroup.getId())) 
      .flatMap(Observable::from) 
      .flatMap(poiCollectionToUserGroup -> findPoiCollectionById(poiCollectionToUserGroup.getPoiCollectionId())) 
      .doOnNext(collection -> poiCollections.add(collection)) 
      .subscribe(); 

    return Observable.just(poiCollections); 
} 

rxJavas toList()を利用してストリームAPI。

関連する問題