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

反应式编程-完成后调用另一个Mono#SpringWebFlux

匡旭东
2023-03-14

我正在努力实现以下目标:

我有两种方法——1。公共方法1 2。公共方法2

public Mono<Boolean> test(){
 method1.map(status -> {
  if(status.isActive){
    throw Exception;
  } 
 }).switchIfEmpty(method2).thenReturn(true);
}

你能帮助:

  1. 问题是,只有在使用method1.subscribe()时,控件才会转到方法1。我无法返回值或抛出异常基于状态字段从方法1返回。
  2. 当method1.map()或method1.filter()时,控件甚至不会转到方法1
  3. 当方法1返回Mono.empty(),那么控件不会切换到If清空(方法2)

共有1个答案

翟奇
2023-03-14

您的测试方法只返回一个发布者。除非有消费者订阅,否则你无法用它实现任何目标。这可能会给你一个提示,为什么事情可能不像预期的那样适合你。

此外,你甚至还没有澄清你是否在打电话/订阅它。

 类似资料:
  • 我的代码是这样构造的- 我正在努力实现这一点: 方法1()返回地址时,我需要使用它并调用方法2()来更新MongoDB文档中的地址。也没有抛出异常。但是我没有看到任何日志在方法2() 代码: 虽然调用了method2(),但MongoDB中的文档更新没有发生。

  • 目前,我使用的是firebase实时数据库。因此,我的数据更改来自另一个线程。因此,我无法控制何时更新新的数据。然后我如何知道何时调用以刷新UI? 谢谢

  • 需要从单声道递归调用单声道以获得完整的项目。我有一个Pojo项目,在这里我将传递根ID,并尝试从另一个服务获得项目。我写我的服务使用sprignwebFlow。所以我正在使用webClient调用服务并返回Mono 另一项服务将提供该项目及其直接子项。因此,我的要求是,当我传递根id时,我将获得根项及其直接子项,根将LM类型项作为子项。 获得Root项目后,我需要收集所有的LM id,并再次调用每

  • 我正在我的UI线程中调用一个方法。在这个方法中创建了一个新线程。我需要UI线程等待这个新线程完成,因为我需要这个线程的结果来继续UI线程中的方法。但我不想让UI在等待时冻结。有没有办法让UI线程在不忙的情况下等待?。

  • 问题内容: 我有以下JavaScript代码: 我如何确保仅在完成后调用? 问题答案: 指定一个匿名回调,并使function1接受它:

  • 问题内容: 我想在pullData()完成后运行loadViews(),但我想知道这样做的最佳方法是什么?我也想在其上设置10秒超时,以便在可能的情况下显示网络错误。根据我的阅读,GCD看起来是完成此任务的方法,但是我对它的实现感到困惑。谢谢你提供的所有帮助! 问题答案: 您需要的是带有完成块的完成处理程序。 创建它非常简单: 并使用您的完成块,如下所示: