我是webfluxReact堆库的新手,第一次使用React式编程。我想并行调用2个restapi,在这些响应的基础上,我想再调用2个不同的api。
在调用最后2个api时,对于1个api,我需要并行地进行多个调用,然后对它们的响应进行处理。
下面是我使用的代码:
Mono<response1> r1 =
MyService1.method1(InputParameters);
Mono<response2> r2 =
MyService2.method2(InputParameters);
return Mono.zip(
r1,
r2,
(r1Alias, r2Alias) -> new finalResponseClass(r1Alias, r2Alias))
.flatMap(
data ->
MyService3
.method3(inputParameters)
.map(
res ->
data.setService3ResponseInFinalResponse(res)))
.flatMap(
data -> {
Mono<finalResponseClass> finalRes =
Flux.fromIterable(ListOfInputParametersForLastApiObtainedFromData);
.flatMap(
each ->
MyService4
.method(each)
.map(
ret ->
data.setService4ResponseInFinalResponse( ret))
.subscribeOn(Schedulers.elastic()))
.next();
return finalRes;
});
在这里,当我打电话的时候
myservice4.method(each).map(ret->data.setservice4responseinfinalresponse(ret)).subscribeon(schedulers.elastic())
.map最后只调用了一次,我希望每次运行我的上面的.flatmap时它都会运行…如果你能指导我,它会非常有用…这是我的确切要求………例如,假设我的流量有4个条目,那么myservice4.method会被调用4次,所以我希望每次调用服务时.map()也应该被调用4次
但问题是它只运行1次
让我知道我错过了什么
暂无答案!
目前还没有任何答案,快来回答吧!