我是Vertx框架的新手。所以我在使用异步编程时有点迷失。我的问题是,如果我只想计算结果而不是返回另一个未来,那么如何处理未来。
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;
}
};我搜索了关于这些未来的东西的实践,但我不是很了解。不过,我不知道这是不是正确的做法。我想要做的是,在搜索未来结束后,我可以根据它的结果创建其他未来,我希望让最终的未来通知其他函数,如果它包含的所有未来都完成了,则返回来自该对象的响应。我是否犯了一些错误,比如如果我在未来1..我还没有完成时调用其他函数上的finalFuture.oncomplete?我该怎么解决这个问题呢?
发布于 2021-03-25 00:15:30
如果finalFuture依赖于future1..future n的结果,我建议您查看CompositeFutures。Composite Future Docs Here
CompositeFutures.all等待所有期货都成功,如果其中一个失败,则失败。
如果在初始化CompositeFuture之前生成期货,则可以在以后单独访问该未来的结果。
Future f1 = getX()
Future f2 = getY()
Future f3 = getZ()
CompositeFuture cf = CompositeFuture.all([f1,f2,f3])
cf.onComplete(ar -> {
//Check Succeeds
//DO FURTHER PROCESSING
})我希望我的理解是正确的,这对我有帮助。
https://stackoverflow.com/questions/66769591
复制相似问题