【发布时间】:2020-06-15 08:30:48
【问题描述】:
我有这样的方法:
fetch(request: Request) which returns a Future<Try<Response>>
我有一个请求列表,想要异步调用 fetch 方法,如果一个 fetch 失败,那么整个方法将失败/抛出。如果所有获取都成功,则从响应正文中提取一个字段并返回一个列表。
类似:
fetchAll(requests: List<Request>) {
List<Future<Try<Response>>> futureResponses;
requests.stream().map(request -> {
Future<Try<Response>> futureResp = fetch(request);
futureResponses.add(futureResp);
})
}
如何编写其余代码以正确处理 Try?如果没有 Try,我想我可以使用 Future.sequence() 将 Futures 列表转换为 Future 列表。
【问题讨论】:
-
您的问题被标记为
scala,但代码是Java。请澄清。 -
获取API是scala,但是需要用Java调用API。所以它有点混合了 Scala 和 Java。
-
您可以查看
Future.reduceLeft