首页 > 解决方案 > 在 Mono 中未调用终端映射操作

问题描述

以下是相关代码:

Mono<ResponseEntity<String>> res = remoteCall(HttpMethod.POST, issueTokenUrl, GsonConvertor.getInstance().serialize(request));

Mono<IssueToken> it = res.map(this::getIssueToken);

远程调用成功(状态码为 200,响应主体很好),但流程不会进入getIssueToken()方法内部。这是方法:

private IssueToken getIssueToken(ResponseEntity<String> response) {
    System.out.println("Inside the method");    //this line won't print on the console
    HttpStatus statusCode = response.getStatusCode();

    checkErrors(response);
    return GsonConvertor.getInstance().deserialize(response.getBody(), IssueToken.class);
  }

有人能告诉我为什么会这样吗?

标签: javastreamreactor

解决方案


map(Function)只是创建一个新Mono的,但诀窍是该函数不直接评估。当您使用它时,它会被评估,例如通过调用subscribe().


推荐阅读