第 3 章 Eclipse Vert.x 4 中的变化


本节介绍 Eclipse Vert.x 4 和 3.x 版本之间的基本区别。

3.1. 对异步操作使用将来的方法

Eclipse Vert.x 4 使用将来的异步操作。每个回调方法都有对应的未来方法。将来可用于编写异步操作。您可以使用回调和将来的方法组合将基于回调的应用程序迁移到 Eclipse Vert.x 4。但是,您还可以继续使用回调进行异步操作。

以下示例演示了如何将回调用于 Eclipse Vert.x 3.x 版本的异步操作。

WebClient client = WebClient.create(vertx);
HttpRequest request = client.get("/resource");

request.send(ar -> {
  if (ar.succeeded()) {
    HttpResponse response = ar.result();
  } else {
    Throwable error = ar.cause();
  }
});

以下示例演示了如何将回调和将来的方法一起用于 Eclipse Vert.x 4 中的异步操作。

WebClient client = WebClient.create(vertx);
HttpRequest request = client.get("/resource");

Future<HttpResponse> response = request.send();

response.onComplete(ar -> {
  if (ar.succeeded()) {
    HttpResponse response = ar.result();
  } else {
    Throwable failure = ar.cause();
  }
});

错误处理对于未来的更好是更佳的。在回调中,您必须在组成的每个阶段处理故障,而在将来您可以在结束时处理故障。在基本应用程序中,您可能不会注意到使用回调和将来的不同。

以下示例演示了如何使用回调来编写两个异步操作。您可以看到错误在每个位置进行处理。

client.get("/resource1").send(ar1 -> {
  if (ar1.succeeded()) {
    HttpResponse response = ar.result();
    JsonObject json = response.body();
    client.put("/resource2").sendJsonObject(ar2 -> {
      if (ar2.succeeded()) {
        // Handle final result
      } else {
        Throwable failure2 = ar.cause();
      }
    });
  } else {
    Throwable failure1 = ar.cause();
  }
});

以下示例演示了如何使用回调和将来在 Eclipse Vert.x 4 中编写两个异步操作。这个错误仅在末尾处理一次。

Future<HttpResponse> fut1 = client.get("/resource1").send();

Future<HttpResponse> fut2 = fut1.compose(response -> client.put("/resource2").sendJsonObject(response.body()));

fut2.onComplete(ar -> {
  if (ar.succeeded()) {
    // Handle final result
  } else {
    Throwable failure = ar.cause();
  }
});
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.