如何在Vert.x中处理Future



我对Vertx Framework很陌生。所以我对使用异步编程有点迷失了方向。我的问题是,如果我只想计算结果,而不是返回另一个未来,如何处理未来。

class example {
private computedData;
public Future<Void> process() {
Future<T> search = OperationFromDataBase();
Future<Void> finalFuture = search.onComplete(re -> {
computeWithresult();
for (;computeResult;) {
getOtherFuturesFromDataBase()
future1.oncomplete(..);
future2.oncomplete(..);
...
futurei.oncomplete(..);
}).mapEmpty();
return finalFuture;
}
};

我搜索了关于这些未来事物的实践,但我不太了解。我不知道这是否是正确的做法。我想做的是,在搜索future结束后,我可以根据它的结果创建其他future,如果它包含的所有future都完成了,我想让最终的future通知其他函数从对象返回响应。我是否犯了一些错误,比如当future1..I还没有完成时,我调用了其他函数的finalFuture.oncomplete?我该怎么办才能解决这个问题?

如果finalFuture依赖于future1.futuren的结果,我建议查看CompositeFutures。此处为复合未来文档

CompositeFutures.all等待所有期货成功,或者如果一个期货失败则失败。

如果您在初始化CompositeFuture之前生成future,那么您可以稍后单独访问该future的结果。

Future f1 = getX()
Future f2 = getY()
Future f3 = getZ()
CompositeFuture cf = CompositeFuture.all([f1,f2,f3])
cf.onComplete(ar -> {
//Check Succeeds
//DO FURTHER PROCESSING
})

我希望我能正确理解,这会有所帮助。

最新更新