当前位置:网站首页>Mono 的一些实例方法
Mono 的一些实例方法
2022-06-26 16:02:00 【_lrs】
1.as
@Test
public void as() {
//传入 Function<? super Mono<T>, P> ,对 mono 进行中间的映射转换成 P
Mono.just("hello mono").as(v -> v.subscribe(System.out::println));
}
2.map
@Test
public void map() {
//对元素进行映射
Mono.just("hello mono").map(v -> v + " map").subscribe(System.out::println);
}
@Test
public void mapNotNull() {
//对元素进行映射,元素不能是null
Mono.just("hello mono").mapNotNull(v -> v + " map").subscribe(System.out::println);
}
3.flatMap
@Test
public void flatMap() {
//对元素进行映射,返回值经过 Mono 包装
Mono.just("hello mono").flatMap(v -> Mono.just(v).map(item -> item + "map")).subscribe(System.out::println);
}
@Test
public void flatMapMany() {
//对元素进行映射,返回值经过 Publisher 包装
Mono.just("hello mono").flatMapMany(v -> Mono.just(v).map(item -> item + "map")).subscribe(System.out::println);
}
@Test
public void flatMapMany2() {
//对元素进行映射,第一个参数返回值经过 Publisher 包装,第二个参数 在出错时调用,第三个参数 在正常结束时调用
Mono.just("hello mono")
.flatMapMany(v -> Mono.just(v).map(item -> item + "map"),
error -> Mono.just(error.getMessage()),
() -> Mono.just("...end..."))
.subscribe(System.out::println);
}
@Test
public void flatMapIterable() {
//将元素进行映射成 Iterable
Mono.just("hello mono").flatMapIterable(v -> Arrays.asList(v.split(" "))).subscribe(System.out::println);
}
4.fliter
@Test
public void filter() {
//将元素进行过滤
Mono.just("hello mono").filter(v -> v != null).subscribe(System.out::println);
}
@Test
public void filterWhen() {
//将元素通过 Publisher<Boolean>> 进行过滤
Mono.just("hello mono").filterWhen(v -> {
if (v != null) {
return Mono.just(true);
}
return Mono.just(false);
}).subscribe(System.out::println);
}
5.then
@Test
public void then() {
//输出then里的mono
Mono.just("hello mono").then(Mono.just("then")).subscribe(System.out::println);
}
@Test
public void thenEmpty() {
//返回空的 Mono
Mono.just("hello mono").thenEmpty(Mono.empty()).subscribe(System.out::println);
}
@Test
public void thenMany() {
//返回 Flux
Mono.just("hello mono").thenMany(Mono.just("thenMany")).subscribe(System.out::println);
}
@Test
public void thenReturn() {
//传入值
Mono.just("hello mono").thenReturn("thenReturn").subscribe(System.out::println);
}
6.defaultIfEmpty
@Test
public void defaultIfEmpty() {
//为空时的默认值
Mono.empty().defaultIfEmpty("defaultIfEmpty").subscribe(System.out::println);
}
7.switchIfEmpty
@Test
public void switchIfEmpty() {
//为空时的默认值,传入mono
Mono.empty().switchIfEmpty(Mono.just("switchIfEmpty")).subscribe(System.out::println);
}
8.do
@Test
public void doTest() {
//建立订阅关系时执行doFirst
Mono.just("hello mono").doFirst(() -> System.out.println("doFirst")).subscribe(System.out::println);
//消费元素之后执行倒序执行doAfterTerminate
Mono.just("hello mono")
.doAfterTerminate(() -> System.out.println("1"))
.map(v -> v + " map")
.doAfterTerminate(() -> System.out.println("2"))
.subscribe(System.out::println);
//消费元素之后,在onComplete 之后执行doFinally
Mono.just("hello mono").doFinally(t -> System.out.println(t.toString())).subscribe(System.out::println);
//消费元素之后执行doOnSuccess,在doAfterTerminate之前执行
Mono.just("hello mono").doOnSuccess(System.out::println).subscribe(System.out::println);
//订阅关系调用cacel()时回调
Mono.just("hello mono").doOnCancel(System.out::println).subscribe(System.out::println);
//建立订阅关系调用 onSubscribe() 时回调
Mono.just("hello mono").doOnSubscribe(System.out::println).subscribe(System.out::println);
//订阅关系调用request()时回调
Mono.just("hello mono").doOnRequest(System.out::println).subscribe(System.out::println);
//订阅者调用onNext()时回调
Mono.just("hello mono").doOnNext(System.out::println).subscribe(System.out::println);
//订阅者调用onNext()时回调
Mono.just("hello mono").doOnEach(System.out::println).subscribe(System.out::println);
//订阅关系是 CancelledSubscription 时回调
Mono.just("hello mono").doOnDiscard(String.class, System.out::println).subscribe(System.out::println);
//订阅者调用onError()时回调
Mono.defer(() -> Mono.just(1 / 0)).doOnError(System.out::println).subscribe(System.out::println);
}
9.on
@Test
public void onTest() {
//onNext() 出错的时候回调
Mono.just("hello mono")
.map(v -> 1 / 0)
.onErrorContinue((error, obj) -> System.out.println(obj + ":" + error))
.subscribe(System.out::println);
//调用 onError() 时对异常进行映射
Mono.just("hello mono")
.map(v -> 1 / 0)
.onErrorMap(error -> error)
.subscribe(System.out::println);
//异常的时候回调onErrorResume获取mono作为发布者
Mono.just("hello mono")
.map(v -> 1 / 0)
.onErrorResume(error -> Mono.just(1))
.subscribe(System.out::println);
//异常的时候回调onErrorReturn获取值 被mono包装后作为发布者
Mono.just("hello mono")
.map(v -> 1 / 0)
.onErrorReturn(1)
.subscribe(System.out::println);
//异常时不处理异常
Mono.just("hello mono")
.map(v -> 1 / 0)
.onErrorStop()
.subscribe(System.out::println);
//异常时断开订阅关系
Mono.just("hello mono")
.map(v -> 1 / 0)
.onTerminateDetach()
.subscribe(System.out::println);
}
边栏推荐
- 大话领域驱动设计——表示层及其他
- What is the process of switching C # read / write files from user mode to kernel mode?
- C语言读取数据
- Redis 迁移(操作流程建议)
- Svg savage animation code
- SAP OData development tutorial - from getting started to improving (including segw, rap and CDP)
- R language plot visualization: plot visualizes the normalized histogram, adds the density curve KDE to the histogram, and uses geom at the bottom edge of the histogram_ Adding edge whisker graph with
- R language generalized linear model function GLM, GLM function to build logistic regression model, analyze whether the model is over discrete, and use the ratio of residual deviation and residual degr
- 10 tf.data
- 人人都当科学家之免Gas体验mint爱死机
猜你喜欢
随机推荐
Redis顺序排序命令
LeetCode 单周赛298,前三题
9 Tensorboard的使用
JS教程之 使用 Electron.JS 构建原生桌面应用程序乒乓游戏
Redis 迁移(操作流程建议)1
stm32h7b0替代h750程序导致单片机挂掉无法烧录程序问题
【时间复杂度和空间复杂度】
Anaconda3 installation tensorflow version 2.0 CPU and GPU installation, win10 system
How to identify contractual issues
JVM笔记
振动式液量检测装置
Swiftui retrieves the missing list view animation
首例猪心移植细节全面披露:患者体内发现人类疱疹病毒,死后心脏重量翻倍,心肌细胞纤维化丨团队最新论文...
Solana capacity expansion mechanism analysis (1): an extreme attempt to sacrifice availability for efficiency | catchervc research
Canvas three dot flashing animation
1-12Vmware新增SSH功能
11 introduction to CNN
MHA switching (recommended operation process)
清华“神奇药水”登Nature:逆转干细胞分化,比诺奖成果更进一步,网友:不靠精子卵子就能创造生命了?!...
R语言广义线性模型函数GLM、glm函数构建逻辑回归模型(Logistic regression)、分析模型是否过离散(Overdispersion)、使用残差偏差与二项式模型中的剩余自由度的比率评估









