37

我正在将用 RxJava 1.x 编写的小项目转换为 Reactor 3.x。一切都很好,只是我不知道如何flatMap(Observable::from)用合适的对应物替换。我有Mono<List<String>>并且我需要将其转换为Flux<String>.

4

3 回答 3

79

在 Reactor 3 中,from运算符已被专门化为几个变体,具体取决于原始源(数组、可迭代等)。

在你的情况下使用yourMono.flatMapMany(Flux::fromIterable)

于 2017-02-02T18:22:28.460 回答
8

我认为可能Flux::mergeSequential静态工厂更适合这里:

 Iterable<Mono<String>> monos = ...
 Flux<String> f = Flux.mergeSequential(monos);

这种合并(顺序)将保持给定源可迭代内部的顺序,并且还将从所有参与的源急切地订阅/请求(因此在计算单声道结果​​时期望更多的并行化)。

于 2018-08-01T09:15:04.647 回答
4

谢谢西蒙,我实现了这样的事情:

List<Object> dbObjects = ListObjectsBD();
    List<Dao> daos = mapperObjToDao(dbObjects);
    Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);
于 2018-07-31T22:05:24.993 回答