CompletableFuture allOf 之后参数问题?
CompletableFuture<String> n1PromQuery = CompletableFuture.supplyAsync(() -> {
String storeArea = null;
for (AllowQtyApply allowQtyApply : pageResult.getList()) {
if(storeArea == null) {
storeArea = allowQtyApply.getStoreArea();
}
}
String n1Prom = null;
......
return n1Prom;
});
CompletableFuture<List<String>> itemNosQuery = CompletableFuture.supplyAsync(() -> {
List<String> itemNos = new ArrayList<>();
for (AllowQtyApply allowQtyApply : pageResult.getList()) {
itemNos.add(allowQtyApply.getItemNo().toString());
}
return itemNos;
});
CompletableFuture<Void> n1PromItemNos = CompletableFuture.allOf(n1PromQuery, itemNosQuery);
CompletableFuture<Map<String, Map<String,String>>> n1PromMapQuery = n1PromItemNos.thenApplyAsync((n1Prom, itemNos) -> {
Map<String, Map<String,String>> n1Map = new HashMap<>();
List promNoList = new ArrayList();
Map<String, String> n1PromMap = new HashMap<String, String>();
Map<String, String> n1PromClassMap = new HashMap<String, String>();
if (n1Prom != null && (List)itemNos.size() > 0) {
promNoList.add(n1Prom);
CSEResponse cseResponse = ProdCenterClient.getPromStoreProducts(storeNo, promNoList, itemNos);//
............................
});
新学CompletableFuture 不太理解, 我以为我allOf 组合了 前两个CompletableFuture之后的新的CompletableFuture可以直接使用前两个的返回值作为参数,但是实际这样做是报错的,如果我想组合后使用前两个的返回值作为参数应该怎么写 ??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
和js的
Promise.all
不同,java的allof
后的新的CompletableFuture
并无法获取前面的结果作为参数,但可以这样取值: