当前位置: 首页 > 知识库问答 >
问题:

如何使用Compltable Future进行外部API调用?

郦翰学
2023-03-14

我假设有很多情况需要调用基于值列表的外部RESTful服务。

    List<Integer> products = Arrays.asList(1, 2, 3);

现在对于这些productId中的每一个,我想并行调用一个外部endpoint。大致如下:

    List<CompletableFuture<Products>> futureProducts = new ArrayList<>();

    for(Integer id : products){
    futureProducts.add(CompletableFuture.supplyAsync(() -> getExternalApiResponse(id)));
    }

你会如何转换这个

    List<CompletableFuture<Product>> futureProducts;

    List<Product> completedProductInformation;

当所有通话成功完成时。

    List<Product> productInformation;

一个人如何使用可完成的未来来实现这一点?

我想我要问的是,如何等待所有调用完成,然后以集合的形式获得结果。

共有1个答案

郎宏浚
2023-03-14

试试这个,你可以在加入后处理流中的其他业务。

futureProducts.stream().map(CompletableFuture::join).collect(Collectors.toList())
 类似资料:
  • 问题内容: 我有一条路线如下: 我正在尝试对Giant Bomb API进行API调用,以获取有关魔兽世界的所有数据。 问题是,路线刚刚加载;它什么也没做,也没有超时,只是连续加载。 我不知道我在做什么错,但是话虽这么说……我也不知道什么是对的。我在努力学习。 任何帮助都会很棒。 谢谢 问题答案: 您需要获取从中获取的数据,并将其作为对原始Web服务器请求的响应发送回去。因为您从未发送任何对原始请

  • 问题内容: 好的,这里是twitter API, 任何人都可以给我有关如何使用Meteor调用此API或链接的任何提示吗 更新:: 这是我尝试过的代码,但未显示任何响应 问题答案: 您要定义checkTwitter Meteor.method 内部 客户范围的块。因为您不能从客户端调用跨域(除非使用jsonp),所以您必须将此块放在一个块中。 顺便说一句,每个文档,在客户端的checkTwitte

  • 我正在进行第三方GET API调用,该调用具有每秒10个请求的速率限制。如何成功控制http GET请求以避免达到第三方的速率限制。我正在使用Vertex Webclient进行GET请求。

  • 我使用postman测试了一个API。使用postman,我设法生成了一个令牌。 从postman那里,我通过一个get请求,使用以下内容和以下详细信息获取了用户的所有数据: 在授权类型下,我选择了“无记名令牌”并将令牌粘贴在其各自的字段中。 当我单击发送时,我得到了一个用户数据的成功响应。 在PHP中,如何在PHP函数中执行相同的api调用(使用id、电子邮件和令牌)? 我试过这个: 但当我查看

  • 我想进行一个REST API调用,它返回一个布尔值作为自定义注释的一部分。 示例代码: 仅当来自 REST 调用的布尔值为 true 时,方法“myMethod 必须被触发,并且应该发生实现,否则将引发类似于 @NotNull 的异常。我想知道这是否可能,如果是,有人请帮助我。

  • 基础连接已关闭:发送时发生意外错误。(身份验证失败,因为远程方已关闭传输流。)