首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vertx3 -从返回一个值?(sql db)

Vertx3 -从返回一个值?(sql db)
EN

Stack Overflow用户
提问于 2015-07-16 21:50:43
回答 1查看 1K关注 0票数 2

我有一个接口,其中有一个返回"config“对象的方法。

我想在安卓和Vertx3环境中使用这个界面。

代码语言:javascript
复制
Config retrieveConfig(String authCreds);

我试图在vertx程序中实现这一点,利用它的JDBC客户机,但我遇到了一些问题。

代码语言:javascript
复制
jdbcClient.getConnection(sqlConnResult -> 
 //checks for success
 sqlConnResult.result().query(selectStatement, rows -> {
     //get result here, want to return it as answer to interface.
     //seems this is a "void" method in this scope.
});

这个接口可以使用Vertx异步代码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 09:27:28

Async programming中,您不能真正地将您的值返回给调用方,因为这将是一个阻塞调用--这是async programming试图删除的主要内容之一。这就是为什么在Vertx中,许多方法返回thisvoid

有各种不同的范例可供选择:

  • Vert.x广泛使用了Handler<T>接口,其中handler(T result)方法将与结果一起执行。
  • Vert.x 3也支持Rx Observable。这将允许您返回一个Observable<T>,它将在subscribers完成后将结果发送给subscribers
  • 此外,始终有一个返回Future<T>的选项,一旦异步任务完成,该选项将包含结果。尽管Vert.x并没有很好地使用这一点。

因此,对于blockingnon-blocking api,您可能会发现很难拥有这样的blockingVertx运行阻塞代码提供了很好且简单的方法,但我不认为这是一个很好的解决方案。

就我个人而言,我想看看RxJava。有对Android上的Rx的支持,并且在Vertx 3中得到了很好的采用--几乎每个API调用都有一个Rx当量

移自:

代码语言:javascript
复制
Config retrieveConfig(String authCreds);

代码语言:javascript
复制
Observable<Config> retrieveConfig(String authCreds);

将使您能够拥有一个公共接口,并使它能够在AndroidVert.x上工作。它还将带来额外的好处,即不必走入Rx试图避免的回调地狱。

希望这能帮上忙

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

https://stackoverflow.com/questions/31465131

复制
相关文章

相似问题

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