如何将 Mono<List<String>> 转换为 Flux<String>
How to convert Mono<List<String>> into Flux<String>
我正在将用 RxJava 1.x 编写的小项目转换为 Reactor 3.x。一切都很好,只是我找不到如何用合适的对应物替换 flatMap(Observable::from)
。我有 Mono<List<String>>
,我需要将其转换为 Flux<String>
。
在 Reactor 3 中,from
运算符已专门化为几个变体,具体取决于原始来源(数组、可迭代等...)。
根据您的情况使用 yourMono.flatMapMany(Flux::fromIterable)
。
谢谢西蒙,我实现了这样的东西:
List<Object> dbObjects = ListObjectsBD();
List<Dao> daos = mapperObjToDao(dbObjects);
Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);
我认为 Flux::mergeSequential
静态工厂可能更适合这里:
Iterable<Mono<String>> monos = ...
Flux<String> f = Flux.mergeSequential(monos);
这种合并(顺序)将保持给定源可迭代内部的顺序,并且还将 subscribe/request 热切地从所有参与的源(因此在计算单声道结果时预期更多的并行化)。
我正在将用 RxJava 1.x 编写的小项目转换为 Reactor 3.x。一切都很好,只是我找不到如何用合适的对应物替换 flatMap(Observable::from)
。我有 Mono<List<String>>
,我需要将其转换为 Flux<String>
。
在 Reactor 3 中,from
运算符已专门化为几个变体,具体取决于原始来源(数组、可迭代等...)。
根据您的情况使用 yourMono.flatMapMany(Flux::fromIterable)
。
谢谢西蒙,我实现了这样的东西:
List<Object> dbObjects = ListObjectsBD();
List<Dao> daos = mapperObjToDao(dbObjects);
Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);
我认为 Flux::mergeSequential
静态工厂可能更适合这里:
Iterable<Mono<String>> monos = ...
Flux<String> f = Flux.mergeSequential(monos);
这种合并(顺序)将保持给定源可迭代内部的顺序,并且还将 subscribe/request 热切地从所有参与的源(因此在计算单声道结果时预期更多的并行化)。