首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应堆3从映射函数创建MonoEmpty

反应堆3从映射函数创建MonoEmpty
EN

Stack Overflow用户
提问于 2019-01-23 09:26:20
回答 1查看 84关注 0票数 0

map函数中的返回值应该是MonoEmpty

示例:

代码语言:javascript
复制
Mono<Void> empty = Mono.just("ping").map(s-> ????);

或者,如果我需要这个功能,模式应该是执行flatMap吗?

代码语言:javascript
复制
Mono<Void> empty = Mono.just("ping").flatMap(s-> Mono.empty());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 12:47:00

如果大多数时候都需要进行转换,但在某些条件下是空的,请使用handle (它能够在不使用flatMap开销的情况下映射到零):

代码语言:javascript
复制
Mono<String> emptyIfNotPing = Mono.just("ping")
        .handle((t, sink) -> {
            if (t.equals("ping")) sink.next("pong");
            else sink.complete();
        });

如果您不关心元素,只想传播终端信号(onCompleteonError),可以使用ignoreElement (维护泛型类型)或then() (变为Mono<Void>):

代码语言:javascript
复制
Mono<String> source = Mono.just("foo");
Mono<Void> emptyWithTypeLoss = source.then();
Mono<String> emptyWithoutTypeLoss = source.ignoreElement();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54323913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档