如何更好的理解 Flux 中的各种方法

Last Modified: 2023/02/09

概述

spring webflux 使用了 reactor 库,其中最重要的两个类是 Flux 和 Mono,这两个类中包含了大量的方法,这些方法的用法有些艰深,如何才能更好的理解这些方法,除了读接口文档,还有一个更好的方法是看图。

API 接口配图

官方 API 文档中推荐阅读他们的<参考手册>学习和使用 Flux 和 Mono 的接口。但是具体到某些接口,仅仅阅读接口的文字性说明,可能不能完全理解,此时我们就要查对应方法的接口文档,在这个接口文档中对每个接口都配了一张图,通过这张图我们可以更好的理解某个 operator(接口)的用法。

Flux 类中方法配图

Flux API DOC 的最上面对接口文档中用到的图作了概括性的说明,为了更好的理解文档中具体接口的用法,我们需要仔细观看文档开头处的配图:

Mono 类中方法配图

同样,在 Mono API DOC 文档开头处也有这样一张图:

实际的例子

Flux 中有个 flatMap,还有一个 concatMap,初学者可能需要花一些时间才能理解这两个接口的用法,更别说理解他们的区别了,但是好在文档中有配图,可以通过配图更好的理解接口的用法,先看 flatMap 的配图:

从图中我们可以看出:

  • 最上面一条横线上的元素是调用 flatMap 方法的 Flux 对象随时间推移输出的元素,可以看出总共会输出两个元素(假设为 a 和 b);
  • 中间方框中上面两条横线上的元素,则分别是 a 和 b 随着时间推移输出的元素;
  • 最后一条线则是调用 flatMap 方法后最终的输出结果,从输出结果(蓝黄相间)我们可以看出 flatMap 方法输出的元素是无序的。

我们再来看看 concatMap 的配图:

从图中可以看出:

  • 最上面一条横线上的元素是调用 concatMap 方法的 Flux 对象随时间推移输出的元素,可以看出总共会输出两个元素(假设为 a 和 b);
  • 中间方框中第二条线,也就是 b 的输出开始时间在 a 输出完成之后;
  • 最后一条线则是调用 concatMap 方法后最终的输出结果,从输出结果我们可以看出 concatMap 方法输出的元素是有序的。
有问题吗?点此反馈!

温馨提示:反馈需要登录