Webflux 实现异步方法中进行异步调用

  公司的新项目采取spring webflux 的架构,之前没有学习过,刚开始学习的时候,跑通demo 的时候,觉得貌似挺简单的,spring 封装得跟mvc一样,使用者完全无缝感知,框架内部自己完成了异步调用的逻辑,单独使用flux 和mono的时候,还相对简单。

   现在有个场景是,我需要从表a里取数据,然后根据a中的关联id 分别从b和c 表取数据,最后封装数据;

  一开始的写法,发现返回的结果中,title 和num 并没有值,日志中,异步调用的结果是在结果返回之后复制的

return articleRepository.findAll().map(article -> {
            ArticleVO articleVO = new ArticleVO();
            articleVO.setId(article.getId());
            articleVO.setName(article.getName());
            return articleVO;
        }).map(articleVO -> {
            articleTitleRepository.findByArticleId(articleVO.getId()).subscribe(articleTitle -> articleVO.setTitle(articleTitle.getTitle()));
            return articleVO;
        }).map(articleVO -> {
            articleExtRepository.findByArticleId(articleVO.getId()).subscribe(articleExt -> articleVO.setNum(articleExt.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值