Reactor3 Mono
1 Mono 创建
Mono.just(1).mergeWith(Flux.just(1, 2, 3)).subscribe(System.out::print);
System.out.println();
Mono.fromSupplier(() -> "Hello").subscribe(System.out::println);
Mono.justOrEmpty(Optional.of("Hello")).subscribe(System.out::println);
Mono.create(sink -> sink.success("Hello")).subscribe(System.out::println);
2 Mono 操作符
// zip 将多个Mono合并成一个MonoMono.zip(string -> string.length, Mono.just(1), Mono.just(2)).subscribe(System.out::println);System.out.println("---------- 分割线2 ----------");// then 当订阅成功或失败后 返回另外一个publisherMono.zip(string -> string.length, Mono.just(1)).map(getIntegerIntegerFunction()).doOnSuccess(integer -> System.out.println("成功了")).doOnTerminate((a, e) -> System.out.println("结束了")).then(() -> Mono.just(888)).subscribe(System.out::println);System.out.println("---------- 分割线3 ----------");//冷/懒加载 当deferMono被订阅时,才会触发1的feeService()Mono.defer(() -> Mono.just(feeService())) // 1.map(integer -> integer + 1).subscribe(System.out::println);//热加载 Mono.just时,直接触发了1的feeService()Mono.just(feeService()) //1.map(integer -> integer + 1).subscribe(System.out::println);System.out.println("---------- 分割线4 ----------");Mono.delay(Duration.ofMillis(3)).subscribe(System.out::println);TimeUnit.SECONDS.sleep(1);System.out.println("---------- 分割线5 ----------");// using在订阅者取消或者异常时 能执行3将资源清理// true&false暂时没看到区别Mono.using(() -> 1, // 1 数据源integer -> Mono.just(2 + integer), // 2 最终返回integerSource -> System.out.println("清理结果是:" + integerSource), //3 根据4执行3false)// 4 完成前调用 还是 完成后调用.flatMap(integer -> Mono.just(integer + 3)).subscribe(integer -> System.out.println("最终结果是:" + integer));Mono.using(() -> 1, // 1 数据源integer -> Mono.just(2 + integer), // 2 最终返回integerSource -> System.out.println("清理结果是:" + integerSource), //3 根据4执行3true)// 4 完成前调用 还是 完成后调用.flatMap(integer -> Mono.just(integer + 3)).subscribe(integer -> System.out.println("最终结果是:" + integer));Mono<Void> when = Mono.when();Mono.when(Mono.just(1), Mono.just(2), (m1, m2) -> m1 + m2).subscribe(System.out::println);Mono.just(1).concatWith(Mono.just(2)).subscribe(System.out::println);}private static Integer feeService() {//doSomething//call db//calculate feereturn 1;
}private static Function<Integer, Integer> getIntegerIntegerFunction() {return integer -> {integer = integer + 1;System.out.println("----->" + integer);return integer;};
}
返回异常:
Mono.just(1).doOnError(e -> Mono.error(e.getMessage()));
Reactor3 Mono相关推荐
- linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法
本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...
- mono+jexus 部署之CompilationException
使用 HelpPage 组件 CompilationException 好不容易在ubuntu上搭建了mono+jexus,欣喜若狂的部署上发布的网站,急忙打开,成功运行. 但是别高兴的太早,当我打开 ...
- apktoolkit apk反编译没有文件_重新编译mono——修改apk中Assembly-CSharp.dll并重新打包...
环境: 操作系统:Mac OSX10.12.6 mono版本:unity2017.1.3p4 NDK版本:android-ndk-r10e 一.指导步骤: 1.通过apktool工具反编译apk 2. ...
- mono和monodevelop源码编译安装
之所以用源码编译的方式安装mono和monodevelop,是因为通过yum安装的mono不是最新版本,而且monodevelop不能建 asp.net MVC3的工程. 而且通过源码安装,可以进一步 ...
- 从游戏脚本语言说起,剖析Mono所搭建的脚本基础
0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:"为何游戏脚本在现在的游戏开发中变得不可或缺?".那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又 ...
- Ubuntu阿里云搭建Mono.net环境
查看磁盘信息 我们买的系统默认情况下只是安装了系统,而数据盘需要自己挂载,例如我这里的系统占用20多G,还有40多G的数据盘默认是没有挂载的,首先我们运行df -h查看: root@AY1212241 ...
- 使用Mono管理Coyote Linux
Coyote是一个个人防火墙配置Linux的目的是为了保护家庭或教育网络. 这个防火墙产品牌的个人及教育用途,并提供免费下载:http://coyotelinux.com/ CoyoteLinux u ...
- Mono源代码学习笔记:Console类(四)
NullStream 类 (internal class) 下面就是 mcs/class/corlib/System.IO/NullStream.cs: 01: namespace System.IO ...
- mono上运行程序常见问题
1. System.BadImageFormatException: Invalid method header local vars signature token 0x 65d5b2 File n ...
- 扒一扒.net、.net framework、mono和Unity
zhaichao 标签: .net.net frameworkc#monounity 2017-04-23 14:39 425人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许 ...
最新文章
- 召唤超参调优开源新神器:集XGBoost、TensorFlow、PyTorch、MXNet等十大模块于一身...
- 带你学python基础:变量和基本数据类型
- C++基础--简单Socket通信实例
- java 有序set_Java 从Set里面取出有序的记录详解及实例
- 程序包org.springframework.stereotype不存在,解决办法
- linux gcc 示例_最好的Linux示例
- IDEA和mysql的连接
- 控制窗口不能拖拉出主窗口 Dialog And Window
- python网站框架下载_最受欢迎的7款Python开源框架总结,忍不住收藏了~
- libz.so.1: cannot open shared object file: No such file or directory
- c语言明解课后答案,《明解C语言》第三章笔记和练习题
- QTableWidget
- JAVA版村庄哨塔种子_我的世界:TOP18种子,刷怪笼、哨塔和村庄挤在一起,还不来试试?...
- 使用RMAN备份与恢复数据库(2)——参数文件的备份与恢复
- Overloud TH3 for Mac - 电吉他效果器
- 苹果维修服务器gsx查询,手机苹果官网怎么查序列号(苹果gsx免费查询公众号)...
- python pdf文件转换word文件
- Vue—使用canvas实现电子签名
- 知识点3-设计模式与实践
- python爬取3万+条评论,解读猫眼评分9.5的《海王》是否值得一看?