首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vert.x中处理未来

如何在Vert.x中处理未来
EN

Stack Overflow用户
提问于 2021-03-24 02:57:01
回答 1查看 144关注 0票数 0

我是Vertx框架的新手。所以我在使用异步编程时有点迷失。我的问题是,如果我只想计算结果而不是返回另一个未来,那么如何处理未来。

代码语言:javascript
复制
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?我该怎么解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 00:15:30

如果finalFuture依赖于future1..future n的结果,我建议您查看CompositeFutures。Composite Future Docs Here

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

如果在初始化CompositeFuture之前生成期货,则可以在以后单独访问该未来的结果。

代码语言:javascript
复制
Future f1 = getX()
Future f2 = getY()
Future f3 = getZ()

CompositeFuture cf = CompositeFuture.all([f1,f2,f3])

cf.onComplete(ar -> {
    //Check Succeeds
    //DO FURTHER PROCESSING
})

我希望我的理解是正确的,这对我有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66769591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档