Springboot webflux/webclient 按顺序调用restApi获取列表

问题描述 投票:0回答:1

在网络客户端中,如何按顺序调用列表中的每个元素。例如,在下面的代码中,我有值列表,我想为列表中的每个元素调用 apiA 或 B,但按顺序调用。我必须在 api 调用上使用 block 吗?

            for(String value : values) {
                if (value.startsWith("A")) {
                    api.callApiA(value);
                } else {
                    api.callApiB(value);
                }
            }
            
            public Mono<String> callApiA(String value) {
                //Calling rest api
                return Mono<String>
            }
            
            public Mono<String> callApiB(String value) {
                //Calling rest api
                return Mono<String>
            }
spring-boot rxjs rx-java spring-webflux spring-webclient
1个回答
0
投票

您可以使用

concatMap

将此 Flux 发出的元素异步转换为 Publishers,...顺序并使用串联保持顺序。

Flux.fromIterable(values)
        .concatMap(value -> {
            if (value.startsWith("A")) {
                api.callApiA(value);
            } else {
                api.callApiB(value);
            }
        })
© www.soinside.com 2019 - 2024. All rights reserved.