首页 > 解决方案 > 如何解决,调用 Mono然后结果将用于另一个 Mono,然后将返回 Mono?

问题描述

嗨,我刚开始学习反应式编程

我在这里有这段代码,我的流程应该是我将调用 tokenRepository 来获取令牌,然后使用 token.getAccessToken() 作为 cardRepository.findAllCards() 上的参数

public class CardService {

    private final CardRepository cardRepository;
    private final TokenRepository tokenRepository;

    public CardService(CardRepositorycardRepository,
                       TokenRepository tokenRepository) {
        this.cardRepository = cardRepository;
        this.tokenRepository = tokenRepository;
    }

    public Mono<CardCollection> findAllCards(MultiValueMap<String, String> queryParams) {
        Mono<Token> token =tokenRepository.requestToken(); 

        // then I would like to use the token.getAccessToken
        return cardRepository.findAllCards(token.getAccessToken, queryParams); // Then this should return Mono<CardCollection>
    }
}

想知道这是否可能?

标签: javareactive-programmingspring-webfluxspring-mono

解决方案


我找到了答案,虽然我不太确定这是否是正确的方法。

如何将数据向下传递到反应链

这就是我对我的代码所做的。

public Mono<CardCollection> findAllCards(MultiValueMap<String, String> queryParams) {
  return tokenRepository.requestToken().flatMap(token -> {
      return cardRepository.findAllCards(token.getAccessToken(), queryParams);
  });
}

推荐阅读