当前位置: 首页 > 知识库问答 >
问题:

过滤器多工况-反应器通量/单过滤器时()

况鸿雪
2023-03-14

我在使用Mono的filterWhen()时遇到了以下多种情况,但我不知道如何实现正确的方法。

Mono.just("a").filterWhen(item -> conditionA && conditionB)...
// or Mono.just("a").filterWhen(item -> conditionA || conditionB)...

// both is reactive call
Mono<Boolean> conditionA(String a) {
     return webClient.call(....).map(Boolean);//sample return Boolean here}
Mono<Boolean> conditionB(String a) {
     return webClient.call(....).map(Boolean);//sample return Boolean here}

当使用条件A时

另外,当使用conditionA | | conditionB时,当conditionA(或conditionB)返回true时,它是否立即返回?

共有1个答案

岑畅
2023-03-14

操作符Flux#allFlux#any就是您要查找的。

首先,合并对BooleanFlux的响应,并使用Flux#all发出一个单一的布尔值true,如果所有响应都被求值为true:

Flux.merge(conditionA(), conditionB()).all(condition -> condition)

这样,如果conditionAfalse,则值false将在不等待contitionB评估的情况下发出。

顺便说一下,Flux.merge急切地订阅了发布者(所有发布者都是一起订阅的)。如果您想按顺序执行这些条件,请使用Flux.concat

 类似资料:
  • 问题内容: 我有一组项目,我想使用ng-model作为字符串来过滤ng- repeat来过滤集合,到目前为止,我还没有找到一种方法来使表达式被否定时起作用,我做这样的事情: 在文档中,它说我们应该使用!否定表达,但仍然没有运气。 我究竟做错了什么? 问题答案: ‘!’ 字符位于过滤器字符串的前面,如下所示: 过滤器:’!’+ languageOrigin

  • 过滤器是 控制器动作 执行之前或之后执行的对象。 例如访问控制过滤器可在动作执行之前来控制特殊终端用户是否有权限执行动作, 内容压缩过滤器可在动作执行之后发给终端用户之前压缩响应内容。 过滤器可包含预过滤(过滤逻辑在动作之前)或后过滤(过滤逻辑在动作之后), 也可同时包含两者。 使用过滤器 过滤器本质上是一类特殊的 行为, 所以使用过滤器和 使用行为一样。 可以在控制器类中覆盖它的 behavio

  • 请你再一次回顾这张图: 一个 HTTP 请求,过滤器是第一组被执行的对象。同适配器不同的是,一个请求中,可以执行多个过滤器。 如何使用过滤器? 通过 @Filters 注解。 注解 '@Filters' 的值是一个 '@By' 注解的数组,它可以声明在这三个地方 入口函数 子模块 主模块 其中入口函数的 @Filters 优先级更高,其次是子模块,最后是主模块。 就是说,你在入口模块声明了两个过滤

  • 过滤器前缀 :, 比如 :markdown 会把下面块里的文本交给专门的函数进行处理。查看顶部 特性 里有哪些可用的过滤器。 body :markdown Woah! jade _and_ markdown, very **cool** we can even link to [stuff](http://google.com) 渲染为: <body><p>Woah! j

  • 过滤器本质上是可以应用于变量的函数。它们用管道操作符(|)调用,并且可以接受参数。 {{ foo | title }} {{ foo | join(",") }} {{ foo | replace("foo", "bar") | capitalize }} 定义一个新的过滤器 可以在过滤器的入口自定义函数来扩展过滤器。 过滤器函数将要过滤的内容作为第一个参数,并应返回新内容。 参考上下文API了

  • Filters are special post-processors that modify expanded abbreviation right before output to the editor. To better understand how filters work, let’s walk through a simple tutorial. 过滤器在输出发给编辑器之前修改缩写的