在网络客户端中,如何按顺序调用列表中的每个元素。例如,在下面的代码中,我有值列表,我想为列表中的每个元素调用 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>
}
您可以使用
concatMap
来
将此 Flux 发出的元素异步转换为 Publishers,...顺序并使用串联保持顺序。
Flux.fromIterable(values)
.concatMap(value -> {
if (value.startsWith("A")) {
api.callApiA(value);
} else {
api.callApiB(value);
}
})