【发布时间】:2021-12-29 14:34:26
【问题描述】:
我最近了解了复合期货。我知道我可以有一个 Futures 列表,当它们都完成时,compositeFuture 处理程序将被调用:
CompositeFuture.all(futures).onComplete(compositeAsync -> {
if (compositeAsync.succeeded()){
Future<CompositeFuture> cf = compositeAsync.result();
} else {
// at least 1 future failed
}
});
我的问题是关于这一行:Future<CompositeFuture> cf = compositeAsync.result();
我传递给compositeFuture 的future 是List<Future<Buffer>> 类型,但是result() 返回Future。如何从Future<CompoiteFuture> 中获取Future<Buffer>?
我使用以下示例将参数化的期货传入compositeFuture.all(futures);
interface MyCompositeFuture extends CompositeFuture {
// This is what the regular does, just for example
/*
static CompositeFuture all(List<Future> futures) {
return CompositeFutureImpl.all(futures.toArray(new Future[futures.size()]));
}
*/
static <T> CompositeFuture all(List<Future<T>> futures) {
return CompositeFutureImpl.all(futures.toArray(new Future[futures.size()]));
}
}
【问题讨论】: