繁体   English   中英

Mono如何转换<list<string> > 进入助焊剂<string></string></list<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)

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

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

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

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

List<Object> dbObjects = ListObjectsBD();
    List<Dao> daos = mapperObjToDao(dbObjects);
    Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);

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

另一种方法是使用flatMapIterable()

将此 Mono 发出的项目转换为 Iterable,然后将其元素转发到返回的 Flux 中。

所以它看起来像这样:

List<String> strings = new ArrayList<>();
strings.add("hello");
strings.add("world");
strings.add("!");

Mono<List<String>> monoList = Mono.just(strings);

Flux<String> flux = monoList.flatMapIterable(list -> list);

或者将 lambda list -> list替换为Function.identity()

Flux<String> flux = monoList.flatMapIterable(Function.identity());

如何转换 Mono <list<object> &gt; 到通量<object> ?<div id="text_translate"><p> 我刚开始使用反应式,所以如果问题没有意义,请纠正我。</p><p> 我正在创建一个 rest controller 和 Spring WebFlux + Reactive Z206E3718AF092FD1DZ12F8 数据库中的以下文档结构 ICAE712FD1DZ12F8。</p><pre> { "_id": { "$oid": "5ee350839d3d4e34f0790566" }, "customerId": "7777", "contacts": [{ "_id": { "$oid": "5ee350839d3d4e34f0790565" }, "name": "Alice", "mobileNumbers": "0123456789" }, { "_id": { "$oid": "5ee3508a9d3d4e34f0790567" }, "name": "Tom", "mobileNumbers": "1123456789" } ], "_class": "com.demo.contact.model.Customer" }</pre><p> 此示例文档有一位客户及其联系人。 从客户的联系人列表中搜索时,我正在尝试获取 Flux。</p><pre> public Mono&lt;List&lt;Contact&gt;&gt; searchContacts(String customerId, String searchCriteria) { return customerRepository.findById(customerId).map(existingCustomer -&gt; { List&lt;Contact&gt; contacts= existingCustomer.getContacts().stream().filter( // some filtering code ).sorted(Comparator.comparing(Contact::getName)).collect(Collectors.toList()); return contacts; }); }</pre><p> 问题是如何更改这段代码以获得Flux&lt;Object&gt;而不是Mono&lt;List&lt;Object&gt;&gt; ? </p></div></object></list<object>

[英]How to convert a Mono<List<Object>> to a Flux<Object>?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何转换列表<mono<string> &gt; 进入通量<list<string> &gt;? </list<string></mono<string> 转换列表<mono<string> &gt; 到通量<string></string></mono<string> 转换为 Mono <list<string> > 来自助焊剂<list<string> > 在 Java </list<string></list<string> 如何将Mono中的嵌套列表转换为Flux? 如何转换 Mono <list<object> &gt; 到通量<object> ?<div id="text_translate"><p> 我刚开始使用反应式,所以如果问题没有意义,请纠正我。</p><p> 我正在创建一个 rest controller 和 Spring WebFlux + Reactive Z206E3718AF092FD1DZ12F8 数据库中的以下文档结构 ICAE712FD1DZ12F8。</p><pre> { "_id": { "$oid": "5ee350839d3d4e34f0790566" }, "customerId": "7777", "contacts": [{ "_id": { "$oid": "5ee350839d3d4e34f0790565" }, "name": "Alice", "mobileNumbers": "0123456789" }, { "_id": { "$oid": "5ee3508a9d3d4e34f0790567" }, "name": "Tom", "mobileNumbers": "1123456789" } ], "_class": "com.demo.contact.model.Customer" }</pre><p> 此示例文档有一位客户及其联系人。 从客户的联系人列表中搜索时,我正在尝试获取 Flux。</p><pre> public Mono&lt;List&lt;Contact&gt;&gt; searchContacts(String customerId, String searchCriteria) { return customerRepository.findById(customerId).map(existingCustomer -&gt; { List&lt;Contact&gt; contacts= existingCustomer.getContacts().stream().filter( // some filtering code ).sorted(Comparator.comparing(Contact::getName)).collect(Collectors.toList()); return contacts; }); }</pre><p> 问题是如何更改这段代码以获得Flux&lt;Object&gt;而不是Mono&lt;List&lt;Object&gt;&gt; ? </p></div></object></list<object> 如何转换列表<string>变成 Mono<list></list></string> 如何转换通量<list<object> &gt; 进Mono <list<object> &gt; </list<object></list<object> webflux 如何将当前登录 Mono 字符串传递给通量 您将如何在 web 通量中组合 mono 字符串集 如何转换通量<pojo>至 ArrayList<string></string></pojo>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM