我有一个来自executeBlocking的期货列表。我试图等待Compositefuture.all中的所有futureResponses。但是它不在Compositefuture内部。
当我尝试打印列表时,它显示了Future。
List<Future> toComplete=new ArrayList<>();
Vertx vertx = Vertx.vertx();int i;
for(i=0;i<requestsListInDept.size();i++)
{
String reqtype = requestsListInDept.getString(i);
JsonObject requestProperties = dataReader.getRequestProperties(dept,reqtype);
toComplete.add(Future.future());
int currrent=i;
vertx.executeBlocking(future->{
System.out.println("calling for ");
String individualResponse = accReq.createRequests(requestContext,reqtype,empid,requestProperties);
future.complete(individualResponse);
},false,res->{
JsonArray obj=new JsonArray( (res.result()).toString() );
for(int index=0;index<obj.size();index++)
{
JsonObject requestResponse=obj.getJsonObject(index);
response.add(requestResponse);
}
toComplete.get(currrent).complete(res.result());
});
}
CompositeFuture.all(toComplete).setHandler(e -> {
String collect = e.result()
.list()
.stream()
.map(Object::toString)
.collect(Collectors.joining(" ------- "));
System.out.println(collect);
});
return ;
期望:返回应该等待所有将来的响应出现。 实际:不是等待所有期货完成。