如何将 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 热切地从所有参与的源(因此在计算单声道结果​​时预期更多的并行化)。