文章插图
图片
Mono.fromFuture(CompletableFuture<? extends Integer> future)方法:创建一个Mono对象,该对象包含通过调用给定CompletableFuture对象
Mono.fromFuture(CompletableFuture.supplyAsync(() -> 666)).subscribe(System.out::println) ;
文章插图
- 异常处理
public static Mono<Users> invoke(Mono<Users> user) {return user.flatMap(u -> {if ("admin".equals(u.getName())) {return Mono.error(new RuntimeException("越权")) ;}u.setName(u.getName() + " - ");return Mono.just(u) ;});}public static void mAIn(String[] args) {invoke(Mono.just(new Users("admin"))).doOnNext(System.out::println).doOnError(e -> {System.out.println(e.getMessage()) ;})// .onErrorResume(e -> Mono.just(new Users(e.getMessage() + " - fallback"))) // 功能更强,可以对捕获的异常进行响应的处理,然后再返回一个值.onErrorReturn(new Users("return")) // 捕获异常,简单粗暴直接返回一个静态值.doOnNext(System.out::println).subscribe(); }
- 执行结果
越权Users [name=return]
- 错误操作符
文章插图
- 错误返回操作符
文章插图
- 连接操作符
Mono.just(10).concatWith(Mono.just(20)).subscribe(System.out::println) ;
文章插图
图片
- then操作符
Mono.just(10).doOnNext(System.out::println).then(Mono.just(666)) // 切换到另外一个Mono通道, 忽略之前的Mono元素.doOnNext(System.out::println).subscribe();
文章插图
Flux常用操作
- 创建元素
Flux.just(1, 2, 3...)
文章插图
图片
fromArray()、fromIterable()和fromStream():可以从数组、Iterable对象或Stream对象中创建Flux对象 。
Flux.fromArray(new String[]{"1","2","3"});Flux.fromIterable(List.of("a","b","c"));Flux.fromStream(List.of("a","b","c").stream());
fromArray文章插图
fromIterable
文章插图
fromStream
文章插图
empty():创建一个不包含任何元素 , 只发布结束消息的序列 。
文章插图
range(int start, int count):创建包含从start起始的count个数量的Integer对象的序列 。
Flux.range(1, 10) ;
文章插图
图片
- 错误处理
Flux.error(new RuntimeException("错误")).onErrorResume(ex -> Mono.just("发生异常:" + ex.getMessage())).subscribe(System.out::println) ;
error操作符文章插图
onErrorResume操作符
文章插图
- when操作符将给定的Publisher<T>聚合成一个新的Mono , 当所有给定的来源都完成时,这个Mono就会被满足 。错误将导致未执行的结果被取消,并立即向返回的Mono发送错误 。
推荐阅读
- XXL-JOB真的要凉了?出现了一个王炸级别的分布式任务调度与计算框架?
- Astro,这个前端框架有点不一样!
- 10大Web开发框架有哪些?
- 无缝集成GORM与Go Web框架
- 前端框架的演进与未来展望
- 为什么RPC框架数十年还在造轮子?EJB骨灰都快找不到了!
- .NET Core下有热门的ORM框架使用方法
- .NET Core中一些优秀的项目和框架
- 常用消息队列框架与技术选型
- Jest:目前最广泛使用的前端 JavaScript 测试框架