首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

反应式编程之flux concatmap

本文基于project reactor,,reactor-bom版本为Dysprosium-SR4,flux concatMap方法作用是将多个publisher组合起来,然后依次消费,消费的顺序跟传入的顺序相同...,消费完一个publisher后才开始消费下一个publisher,下面看个例子 @Test public void concatmap(){ Student st1 = new Student...teachers = new ArrayList(); teachers.add(t1); teachers.add(t2); Flux.fromIterable(teachers).concatMap...成绩:90 名字:李四 成绩:91 名字:李逵 成绩:97 可以看出上面是按照升序排列的,如果想降序排列,只需修改sort方法里传入的Comparator lambda表达式即可,从concatMap...字面上可以看出这是concat跟map两个单词的拼写,在实际功能上也确实如此,concatMap将传入的数据进行了转换,转换后的数据流拼接起来作为一个新的publisher。

53110

RxJava2 源码解读之 ConcatMap

上一篇文章中我们学习了RxJava2中 FlatMap 的原理,同时知道,FlatMap经过转换后发射的数据不是严格有序的,如果需要数据按顺序被发射,RxJava2提供了另外一个操作符, 也是这篇文章的主角 — ConcatMap...FlatMap vs ConcatMap 之前分析了FlatMap发射数据无序的原因,但是没有实际用代码验证过,这里我们在分析ConcatMap源码之前,我们先运行测试代码,有个直观的感受。...concatmap_运行结果.png 可以看到,虽然我们加上了50ms 的发射延时,数据仍然是完全按顺序发射的。废话不多说,直接看ConcatMap源码。...ConcatMap 源码 嗯,先看方法定义,熟悉的味道 @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) public final Observable concatMap(Function<?

98630
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    五十九、Ribbon负载均衡命令:LoadBalancerCommand(二)执行目标请求

    ---- RxJava的concatMap()方法使用示例 因为LoadBalancerCommand提交任务时多次用到了concatMap()这个操作符的特性,因此此处做个使用示例: @Test public...为了测试无需本例延迟10ms再发射下个数据,否则可能效果不那么明显~ 那么如果你想要保证数据发射的顺序,那就请使用concatMap()方法吧: @Test public void fun2() throws...InterruptedException { Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9) .concatMap(i -> Observable.just...说明:本处源码多次用到了汶上示例的RxJava的中的concatMap操作符,请予以理解 ---- 1、外层逻辑(不同Server间重试) 外层逻辑通过负载均衡算法选出一台Server,并且若开启重试参数的话...Observable o = 选出来的Server实例; // 针对选出来的实例(同一台),执行concatMap里面的操作(Server级别重试) o.concatMap(server

    1.9K31
    领券