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

在while循环中构建通量对象

南门意蕴
2023-03-14

我有一个有趣的问题,我不知道如何在不调用block()方法的情况下解决。

>

  • 我的方法接收用户作为参数。

    它调用外部服务并接收Mono

    如果Mono不包含错误和user.getDepartment(). startsTo("Development")我想将其添加到Flux

    通量应该是我的方法的结果

    现在,不幸的是,在调用我收到的Mono的<code>block()-方法之前,我应该从列表中初始化Flux:

      Flux<User> getUsers(User user) {
    
         List<Users> developmentUsers = new ArrayList<User>();
    
         while (user.containsManager()) {
    
             val resultUser = externalUserServiceClient.getManager(user).block(); //externalUserServiceClient.getManager(user) should return a Mono<User>
             if (resultUser.getDepartment().startsWith("Development"))
                 developemtnUsers.add(resultUser);
             user = resultUser;
         }
    
         return Flux.fromIterable(developmentUsers);
      }
    

    我确信应该有一种方法不中断异步进程链。你知道怎么做吗?

  • 共有2个答案

    林雅畅
    2023-03-14

    通过使用

    externalUserServiceClient.getManager(user).map(manager -> ...);
    
    //or
    
    externalUserServiceClient.getManager(user).flatMap(manager -> ...);
    
    
    宋安晏
    2023-03-14

    您可以使用递归应用getManager函数并将结果组合到Flux中的Mono#扩展

    Flux<User> getUsers(User user) {
      return getManager(user).expand(manager -> getManager(manager));
    }
    
    Mono<User> getManager(User user) {
      if (user.containsManager()) {
        return externalUserServiceClient.getManager(user)
          .filter(manager -> manager.getDepartment().startsWith("Development"));
      } else {
        return Mono.empty();
      }
    }
    

     类似资料:
    • 问题内容: 我想通过Python中的while循环动态创建变量。 问题答案: 可以使用字典来完成此任务。字典是键和值的存储。 你可以使用变量键名来获得变量变量的效果,而不会带来安全风险。 对于你正在考虑做类似事情的情况 … 列表可能比字典更合适。一个列表代表对象的有序序列,并带有整数索引: 对于有序序列,列表比整数键类型的字典更方便,因为列表支持迭代的索引顺序,,和其他操作,将需要尴尬密钥管理与字

    • 我对编码完全陌生,正在使用Python作为一个学校项目开发一个基于文本的游戏。用户必须通过键入“北”、“东”、“南”或“西”进入房间。如果方向无效,则应弹出错误消息,提示用户输入新方向。如果用户键入退出,游戏应该结束。 这个项目有一百万个问题,因为我发现我在编码方面很糟糕,但我想弄清楚的是,如果出现提示,如何让我的程序退出游戏。这是我的代码(它不是完整的代码,只是我到目前为止所拥有的代码。我试图一

    • 我用For创建了一个嵌套循环,这是程序代码和输出,然后我尝试了同时循环,得到了不同的结果 对于 虽然 请引导我。。谢谢

    • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。

    • 编写程序时,您可能会遇到需要反复执行操作的情况。 在这种情况下,您需要编写循环语句以减少行数。 JavaScript支持所有必要的循环,以减轻编程压力。 while循环 JavaScript中最基本的循环是while循环,将在本章中讨论。 while循环的目的是只要expression为真,就重复执行语句或代码块。 表达式变为false,循环终止。 流程图 while loop流程图如下 - 语法

    • 只要给定条件为真,Objective-C编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Objective-C编程语言中while循环的语法是 - while(condition) { statement(s); } 这里, statement(s)可以是单个语句或语句块。 condition可以是任何表达式,true是任何非零值。 当条件为真时,循环迭代。