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

如何在不阻塞的情况下从Flux获取列表?

南门新知
2023-03-14

我有一个存储库,它返回一个流量,并希望将结果设置为另一个需要列表的对象。有没有其他方法可以在不阻塞的情况下以列表的形式获取结果?

这座大楼正在运转,但需要很长时间。

public class FluxToListTest {

    @Autowired PostRepository postRepository;

    public void setUserPosts(User user) {
      user.setPostList(postRepository.findAllByOrderId(user.getId()).collectList().block());
  }
}


interface PostRepository {

    Flux<Post> findAllByOrderId(final UUID userId);
}


@Data
class User {
  UUID id;
  List<Post> postList;
}


class Post {
    UUID id;
    String content;
}

共有1个答案

慕光霁
2023-03-14

简而言之,不需要。您不需要从Flux中提取List。如果你已经开始使用Reactor流——坚持下去。

请尝试以下代码:

public void setUserPosts(User user) {
    postRepository.findAllByOrderId(user.getId())
        .collectList()
        .doOnNext(user::setPostList)// (1)
        .subscribe();               // (2) 
}  
  1. 如果您设置的操作是阻塞,请使用发布/订阅以避免阻塞所有流。
  2. 它开始你的流执行
 类似资料:
  • 问题内容: 我想向服务器发送命令,并确定是否得到响应。 现在,我正在使用的函数,该函数会阻塞直到服务器发出响应,但我要做的就是首先确认服务器是否响应。 我尝试使用或避免此阻止,但这无济于事。 这导致我的程序陷入等待服务器响应的困境,这种情况永远不会发生。根据我对事物的理解,似乎做同样的事情。 我在此处找到的关于该主题的其他问题没有回答我的问题,所以请您回答我的问题会很好。 问题答案: 可能您所需要

  • 假设我有这个方法: 我想调用这个方法,获取字符串,将该字符串转换为整数7,然后以非阻塞方式返回该整数。我该怎么做? 我试过这个,但是函数阻塞(同步): 我尝试使用代替(异步): 但是我得到了这个错误:<代码>类型不匹配:无法从int转换为Mono 那我该怎么办?

  • getUserDetails方法返回JsonNode类型的Mono。但我真的想退货 但是来自Url的json响应类似于 我尝试了不同的方法,但都不管用。doOnNext(分别为-

  • 我在Scala中有一个要求,即运行一系列http调用,这些调用必须按顺序完成且不阻塞。我怎样才能做到这一点?

  • 本文向大家介绍什么情况下会出现css阻塞?相关面试题,主要包含被问及什么情况下会出现css阻塞?时的应答技巧和注意事项,需要的朋友参考一下 css阻塞: 将html解析为dom tree 将css解析为cssom tree 将 domtree 与cssom tree 合并生成render tree 浏览器依照render tree开始布局 所以 css阻塞过程在于下载css资源以及解析生成csso

  • 本文向大家介绍什么情况下会出现js阻塞?相关面试题,主要包含被问及什么情况下会出现js阻塞?时的应答技巧和注意事项,需要的朋友参考一下 未在script 使用 async delay 属性且不是body的最后一个标签 ajax 使用了同步