spring启动webclient-merge

yzuktlbb  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(303)

我想合并两个响应并返回一个通量。

private Flux<Response<List<Company>, Error>> loopGet(List<Entity> registries, Boolean status) {
    return Flux.fromIterable(registries)
            .flatMap(this::sendGetRequest)
            .mergeWith(Mono.just(fetch(status)));

}

这就是我正在做的,正在工作,但是我希望合并在调用mono.just(fetch(status))之前等待。我来解释一下,sendgetrequest返回一个mono,它进行一个api调用,并从结果中将内容保存到db。随后,merge使用fetch方法调用db,但该数据尚未更新。如果我再打电话,我会得到更新的数据。

6rvt4ljy

6rvt4ljy1#

你需要 concatWith 以及 fromCallable 以确保在get请求完成后延迟调用fetch。

private Flux<Response<List<Company>, Error>> loopGet(List<Entity> registries, Boolean status) {
    return Flux.fromIterable(registries)
            .flatMap(this::sendGetRequest)
            .concatWith(Mono.fromCallable(() -> fetch(status)));

}

相关问题