RxJava flatMapIterable与单

我试图整理一下我的代码, Single对于我来说是一个不错的select,因为我正在做一些只会发出一个结果的东西。

我有一个问题,因为我以前使用flatMapIterable采取我的回应(一个列表),并在每个项目上做一些事情。 我没有看到我怎么能用Single实现这个。

 getListOfItems() .flatMapIterable(items -> items) .flatMap(item -> doSomethingWithItem()) .toList() 

这工作得很好,如果getListOfItems返回一个Observable但如果我试着让它返回一个Single ,那么我不能做flatMapIterable ,不能看到替代,任何想法?

Solutions Collecting From Web of "RxJava flatMapIterable与单"

flattenAsObservable应该这样做,它会将Single success值映射到Iterable (list),并将每个列表项作为Observable

  getListOfItems() .flattenAsObservable(new Function<Object, Iterable<?>>() { @Override public Iterable<?> apply(@NonNull Object o) throws Exception { return toItems(o); } }) .flatMap(item -> doSomethingWithItem()) .toList() 

我做了这样的事情

 @Override public Single<List<String>> getAvailablePaths() { return mongoClient.rxFind("t_polygons", new JsonObject()) .toObservable() .flatMapIterable(list -> list) .map(json -> json.getString("path")) .filter(Objects::nonNull) .toList() .toSingle(); }