当前位置: 首页 > wzjs >正文

微网官方网站广告推广计划

微网官方网站,广告推广计划,网站建设新报价图片欣赏,黄埔网站建设(信科网络)在 Reactor 中,transform 和 transformDeferred 是两个用于代码复用和操作符链封装的高级操作符。它们允许你将一组操作符封装成一个函数,并在适当的时候应用到响应式流中。以下是它们的详细总结: 1. transform 操作符 作用:tran…

在 Reactor 中,transformtransformDeferred 是两个用于代码复用和操作符链封装的高级操作符。它们允许你将一组操作符封装成一个函数,并在适当的时候应用到响应式流中。以下是它们的详细总结:


1. transform 操作符

  • 作用transform 操作符允许你将操作符链的一部分封装成一个函数,并在实例化时(assembly time)应用到原始操作符链上。这意味着所有订阅者都会应用相同的操作符链。
  • 适用场景:适用于所有订阅者共享相同行为的场景,例如统一的日志记录、转换等。
  • 示例
      // 定义一个函数,用于过滤掉"orange"颜色并将其余颜色转换为大写Function<Flux<String>, Flux<String>> filterAndMap =f -> f.filter(color -> !color.equals("orange")).map(String::toUpperCase);// 从列表创建Flux,并在过滤和映射前打印每个元素Flux.fromIterable(Arrays.asList("blue", "green", "orange", "purple")).doOnNext(System.out::println)// 使用之前定义的函数对Flux进行转换.transform(filterAndMap)// 订阅转换后的Flux,并打印每个元素.subscribe(d -> System.out.println("Subscriber to Transformed MapAndFilter: " + d));
    
    执行结果如下
    blue
    Subscriber to Transformed MapAndFilter: BLUE
    green
    Subscriber to Transformed MapAndFilter: GREEN
    orange
    purple
    Subscriber to Transformed MapAndFilter: PURPLE
    

2. transformDeferred 操作符

  • 作用transformDeferred 操作符与 transform 类似,也允许你将操作符链封装成一个函数,但主要的区别在于函数的执行时机transformDeferred 是在订阅发生时(subscription time)才应用函数的。这意味着它可以为每个订阅者生成不同的操作链,甚至可以维护一些状态(例如计数器、随机数等)。
  • 适用场景:适用于每个订阅者需要不同操作链的场景,例如根据订阅者的身份、时间、状态等动态生成不同的操作链。
  • 示例
      // 使用AtomicInteger来实现线程安全的计数器AtomicInteger ai = new AtomicInteger();// 定义一个函数,根据计数器的值来选择不同的处理逻辑Function<Flux<String>, Flux<String>> filterAndMap = f -> {// 如果计数器的值为1,则过滤掉"orange"颜色,否则过滤掉"purple"颜色if (ai.incrementAndGet() == 1) {return f.filter(color -> !color.equals("orange")).map(String::toUpperCase);}return f.filter(color -> !color.equals("purple")).map(String::toUpperCase);};// 创建一个Flux,从颜色列表开始,通过.doOnNext()打印每个元素,然后通过.transformDeferred()应用filterAndMap函数Flux<String> composedFlux =Flux.fromIterable(Arrays.asList("blue", "green", "orange", "purple")).doOnNext(System.out::println).transformDeferred(filterAndMap);// 订阅第一个处理流程的结果composedFlux.subscribe(d -> System.out.println("Subscriber 1 to Composed MapAndFilter :" + d));// 订阅第二个处理流程的结果composedFlux.subscribe(d -> System.out.println("Subscriber 2 to Composed MapAndFilter: " + d));
    
    执行结果如下
    blue
    Subscriber 1 to Composed MapAndFilter :BLUE
    green
    Subscriber 1 to Composed MapAndFilter :GREEN
    orange
    purple
    Subscriber 1 to Composed MapAndFilter :PURPLE
    blue
    Subscriber 2 to Composed MapAndFilter: BLUE
    green
    Subscriber 2 to Composed MapAndFilter: GREEN
    orange
    Subscriber 2 to Composed MapAndFilter: ORANGE
    purple
    

3. transformtransformDeferred 的区别

操作符执行时机是否为每个订阅者生成不同操作链是否可以维护状态
transform实例化时
transformDeferred订阅时

4. 总结

  • transform:适用于所有订阅者共享相同操作链的场景,例如统一的日志记录、转换等。
  • transformDeferred:适用于每个订阅者需要不同操作链的场景,例如根据订阅者的身份、时间、状态等动态生成不同的操作链。

通过使用 transformtransformDeferred,你可以更灵活地测试响应式流,尤其是当你需要模拟复杂或非标准的数据流时,它们是非常有用的工具。

http://www.dtcms.com/wzjs/487016.html

相关文章:

  • 做网站的职位叫什么seo1搬到哪里去了
  • 选择网站开发公司的标准关键信息基础设施安全保护条例
  • 个人做动漫资源网站旺道网站优化
  • 啤酒网站建设百度推广怎么操作流程
  • 英文外贸网站制作贴吧高级搜索
  • 中国上市公司名单大全长沙专业竞价优化公司
  • 华硕固件做网站6注册百度账号免费
  • 电子商务 做网站网站自动秒收录工具
  • wordpress模板最新郑州网站关键词优化公司哪家好
  • 网站开发兼职团队合肥seo推广培训班
  • 建设 信用中国 网站seo网站关键词优化
  • html企业网站怎么做拼多多标题关键词优化方法
  • 找一些好的网站建设案例优化什么建立生育支持政策体系
  • 可以做视频网站的源码宁波seo外包
  • 做机械网站免费广告
  • 人人车网站建设成都多享网站建设公司
  • 网站建设微信运营公司宁波优化推广找哪家
  • wordpress 配置价格表网站seo关键词优化
  • 微信小程序商城软件开发网站seo公司哪家好
  • 做地方特产的网站百度流量
  • 安溪住房和城乡规划建设局网站网站seo置顶
  • 网站建站网站看看上海疫情突然消失的原因
  • 免费网页设计作业成品大一seo关键词优化工具
  • c 做网站怎么显示歌词淘宝seo是指什么
  • emlog转移到wordpress关键词排名关键词优化
  • 做的网站网站提交收录
  • 电商 网站建设文字抖音关键词排名系统
  • 培训销售网站建设seo网络营销推广公司深圳
  • 广州手机网站开发报价万网官网登录
  • 河北做网站公司seo优化行业