Java 有没有办法在webflux代码中等待异步方法结果

Java 有没有办法在webflux代码中等待异步方法结果,java,spring-webflux,reactor,Java,Spring Webflux,Reactor,我使用Spring webflux使用Intellij idea进行开发,现在我遇到了一个问题,在我的方法中,我需要从被动mongo获得一个ip(字符串),然后我将转发我的请求。 所以我写了这个代码 @Autowird private XXRepository repository; public Mono<Void> xxxx(ServerWebExchange exchange, String symbol) { StringBuilder builder = new

我使用Spring webflux使用Intellij idea进行开发,现在我遇到了一个问题,在我的方法中,我需要从被动mongo获得一个ip(字符串),然后我将转发我的请求。
所以我写了这个代码

@Autowird
private XXRepository repository;

public Mono<Void> xxxx(ServerWebExchange exchange, String symbol) {
    StringBuilder builder = new StringBuilder();
    String ip = repository.findBySymbol(symbol)
                          .map(xxxxx)
                          .subscribe(builder::append)
                          .toString();
    WebClient.RequestBodySpec forwardRequestInfo = webClient.method(httpMethod)
                .uri(ip);

    xxxxxxx //setting http msg
    WebClient.RequestHeadersSpec<?> forwardRequest;
    return forwardRequest.exchange();
}

那么,有什么方法可以用我的方法立即获得ip吗?

你的构建是一个非常肮脏的黑客行为,不要这样做,并尽量避免在反应流中进行任何副作用操作。
因此,您只需要像这样链接您的运营商:

return repository.findBySymbol(symbol)
                      .map(xxxxx)
                      .map(ip -> webClient.method(httpMethod).uri(ip))
                      ...
                      flatMap(param -> forwardRequest.exchange())

您通常不会
map(ip->webClient.method(httpMethod.uri)(ip))
?是的,它起作用了。我第一次接触异步编程,对这种开发模型不是很熟悉
return repository.findBySymbol(symbol)
                      .map(xxxxx)
                      .map(ip -> webClient.method(httpMethod).uri(ip))
                      ...
                      flatMap(param -> forwardRequest.exchange())