Vertx3 - Return 来自 JDBC 连接的值? (sql 分贝)。
Vertx3 - Return a value from a JDBC connection? (sql db).
我有一个接口只有一个方法 returns "config" Object.
我想在 Android 和 Vertx3 环境中使用此接口。
Config retrieveConfig(String authCreds);
我试图在一个 vertx 程序中实现它,利用它的 JDBC 客户端,但我 运行 遇到了问题。
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 异步代码实现吗?
在 Async programming
中,您不能真正 return 您对调用者的价值,因为这将是一个阻塞调用 - async programming
试图删除的主要内容之一。这就是为什么在 Vertx
中有很多方法 return this
或 void
.
作为替代方案存在各种范例:
Vert.x
广泛使用 Handler<T>
接口,其中 handler(T result)
方法将与结果一起执行。
Vert.x 3
也支持 Rx Observable
。这将允许您 return 一个 Observable<T>
,一旦 async task
完成,它将把结果发送到 subscribers
。
此外,总是有一个选项 return Future<T>
,一旦异步任务完成,它就会包含结果。虽然Vert.x
并没有真正用到这个。
因此您可能会发现 blocking
和 non-blocking api
很难有这样的 common interface
。 Vertx
为 run blocking code 提供了简单易行的方法,但我认为这对您的情况来说不是一个好的解决方案。
就我个人而言,我会看看 RxJava. There is support for Rx on Android, and has been well adopted in Vertx 3
- with almost every API call having a Rx equivalent。
移动自:
Config retrieveConfig(String authCreds);
至
Observable<Config> retrieveConfig(String authCreds);
将使您能够拥有一个通用界面,并使其在 Android
和 Vert.x
上工作。它还将提供额外的好处,即不必误入 Rx
试图避免的回调地狱。
希望这对您有所帮助,
我有一个接口只有一个方法 returns "config" Object.
我想在 Android 和 Vertx3 环境中使用此接口。
Config retrieveConfig(String authCreds);
我试图在一个 vertx 程序中实现它,利用它的 JDBC 客户端,但我 运行 遇到了问题。
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 异步代码实现吗?
在 Async programming
中,您不能真正 return 您对调用者的价值,因为这将是一个阻塞调用 - async programming
试图删除的主要内容之一。这就是为什么在 Vertx
中有很多方法 return this
或 void
.
作为替代方案存在各种范例:
Vert.x
广泛使用Handler<T>
接口,其中handler(T result)
方法将与结果一起执行。Vert.x 3
也支持Rx Observable
。这将允许您 return 一个Observable<T>
,一旦async task
完成,它将把结果发送到subscribers
。此外,总是有一个选项 return
Future<T>
,一旦异步任务完成,它就会包含结果。虽然Vert.x
并没有真正用到这个。
因此您可能会发现 blocking
和 non-blocking api
很难有这样的 common interface
。 Vertx
为 run blocking code 提供了简单易行的方法,但我认为这对您的情况来说不是一个好的解决方案。
就我个人而言,我会看看 RxJava. There is support for Rx on Android, and has been well adopted in Vertx 3
- with almost every API call having a Rx equivalent。
移动自:
Config retrieveConfig(String authCreds);
至
Observable<Config> retrieveConfig(String authCreds);
将使您能够拥有一个通用界面,并使其在 Android
和 Vert.x
上工作。它还将提供额外的好处,即不必误入 Rx
试图避免的回调地狱。
希望这对您有所帮助,