vertx中future的completer方法有什么用?

mj.*_*ati 1 java future vert.x

我是VertX框架的新手(也是反应式编程)。当我读到“ Future”时,我不明白“ completer”方法的用途是什么,什么时候必须使用它?如果有人可以帮助我,我将不胜感激。

tse*_*ont 6

Vert.x异步方法通常使用Handler<AsyncResult<X>>参数来定义。此参数是操作完成时调用的回调。

vertx.createHttpServer().listen(ar -> {
  // callback implementation
});
Run Code Online (Sandbox Code Playgroud)

正如您所注意到的,在最新版本的Vert.x中,有一个Future<X>实现,Handler<AsyncResult<X>>因此您可以创建一个future并将其直接用作异步操作参数:

Future<HttpServer> serverFuture = Future.future();
vertx.createHttpServer().listen(future);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用将来的方法,例如mapcompose

在旧版本中,future不是异步结果的处理程序,因此您必须使用以下completer方法:

Future<HttpServer> serverFuture = Future.future();
vertx.createHttpServer().listen(future.completer());
Run Code Online (Sandbox Code Playgroud)

从3.7.0版开始,该completer方法已弃用,并将在版本4中删除。