Асинхронные методы Vert.x часто определяются с помощью параметра Handler<AsyncResult<X>>
.Этот параметр является обратным вызовом, вызываемым после завершения операции.
vertx.createHttpServer().listen(ar -> {
// callback implementation
});
Как вы заметили, в последних версиях Vert.x Future<X>
реализует Handler<AsyncResult<X>>
, поэтому вы можете создать будущее и использовать егонепосредственно как параметр асинхронной операции:
Future<HttpServer> serverFuture = Future.future();
vertx.createHttpServer().listen(future);
И затем вы можете использовать будущие методы, такие как map
или compose
.
В старых версиях будущее не было обработчикомдля асинхронных результатов вам пришлось использовать метод completer
:
Future<HttpServer> serverFuture = Future.future();
vertx.createHttpServer().listen(future.completer());
Начиная с версии 3.7.0, метод completer
устарел и будет удален в версии 4.