Vertx Future Object返回null

时间:2018-01-31 21:26:53

标签: vert.x

public Future<String> getString(){
    Future<String> data = Future.future();
    postgreSQLClient.query("select * from test", resultSetAsyncResult -> {
        if(resultSetAsyncResult.succeeded()){
            List<JsonObject> rows = resultSetAsyncResult.result().getRows();
            data.complete("Completed...");
        }
    });
    return data;
}


Future<String> future = getString();
System.out.println(future.result());

此Return 。我在这里做错了吗?我也尝试过AtomicReference,它也返回null。困惑。

1 个答案:

答案 0 :(得分:2)

与Java Future不同,Vert.x Future不会阻止。

换句话说,当您使用Java future.get()编写Future时,它会阻止调用方,直到将来完成,而具有Vert.x future.result()的{​​{1}}会返回立即,未来是否完成。

Vert.x Future没有阻止,因为Vert.x代码在必须永远不会被阻止的事件循环上运行。

如果您想要结果,请设置处理程序

Future