【响应式编程】

响应式编程格式,参考博客

https://blog.51cto.com/liukang/2090170
https://blog.csdn.net/zgpeace/article/details/103311708

流的理解

任何东西都可以认为是一个数据流,面向数据流编程。观察者观察关心的数据流并执行相关业务操作。变化传播:输入一个数据流,经过一系列操作转化成另一个数据流

在这里插入图片描述

使用

流式编程中方法:map和flatmap 的区别

map

一个数据项经过转换映射成一个新的数据项
入:数据项–>出:新数据项 各个数据项组合成数据流
Flowable.just(5, 2, 4, 0, 3, 2, 8)
.map(i -> i+1)
.subscribe(System.out::println);
在这里插入图片描述

flatMap

入:数据项–>出:数据流 出的数据流组合成一个新的数据流
Flowable.just(5, 2, 4, 0, 3, 2, 8)
.flatMap(i -> Flowable.just(i, i+1, i+2, i+3))
.subscribe(System.out::println);
在这里插入图片描述

onErrorReturn(常用的错误操作符)

在流中遇到错误时,接管流,发送数据然后正常终止。
Flowable.just(“this is a item”)
.map(item -> item.replaceFirst(null, “iss”))
.onErrorReturn(throwable -> throwable.toString())
.subscribe(System.out::println);
运行结果 输出throwable序列化的字符串:java.lang.NullPointerException

响应式编程应用实列

        Flux.fromIterable(csiCheckerList)
            .map(checker -> checker.check(ctx, csiCommonProperties, csiObject))
            .filter(Optional::isPresent)
            .map(Optional::get)
            .map(Mono::fromFuture)
            .flatMap(Mono::flux)
            .take(1)
            .subscribe(
                csiResultListener::consume,
                e -> {
                    if (e instanceof CsiCommonException) {
                        throw (CsiCommonException) e;
                    }
                    throw new CsiCommonException(ErrorCodeEnum.SYSTEM_ERROR.getCode(),
                        "Failed to invoke CsiChecker list , traceId=" + PandoraHelper.getInstance().getTraceId() + ", errorMsg =" + e.getMessage(),
                        e
                    );
                },
                () -> {
                    // noop
                }
            );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值