10.3.4 对反应类型执行逻辑操作
最后更新于
最后更新于
有时你只需要知道 Mono 或 Flux 发布的条目是否符合某些条件。all() 和 any() 操作将执行这样的逻辑。图 10.21 和 10.22 说明了 all() 和 any() 是如何工作的:
假设你想知道由 Flux 发布的每个 String 都包含字母 a 或字母 k。下面的测试演示如何使用 all() 检查该条件:
在第一个 StepVerifier 中,检查字母 a。all 操作应用于源 Flux,从而生成 Boolean 类型的 Mono。在本例中,所有的动物名都包含字母 a,因此从产生的 Mono 发出 true。但是在第二个 StepVerifier 中,得到的 Mono 将发出 false,因为并非所有的动物名都包含 k。
与其执行全部满足或完全不满足的检查,不如满足至少有一个条目匹配。在这种情况下,any() 操作就是你所需要的。这个新的测试用例使用 any() 检查字母 t 和 z:
在第一个 StepVerifier 中,你会看到生成的 Mono 发出 true,因为至少有一个动物名有字母 t(特别是 elephant)。在第二个 StepVerifier 中,生成的 Mono 发出 false,因为没有一个动物名包含 z。