当前位置: 首页 > 知识库问答 >
问题:

为什么Future在Vertx中扩展处理程序?

夔庆
2023-03-14

在许多函数中,我们都有一个签名,比如eventbus::request(字符串地址、对象消息、处理程序 >>replyHandler) ,但是我们不能将Future传递给这个函数,对吗?

共有1个答案

东方智敏
2023-03-14

让我们从以下事实开始:Future是延迟值设计模式的一个实现,与JavaScript Propress、Kotlin的Deferred和许多其他模式相同。

要获得延迟值的结果,通常有两种选择:提供回调,或者阻塞当前执行线程,等待延迟值返回结果或异常。

由于Vert.x与JavaScript运行时一样,使用有限数量的线程操作,所以它选择不提供阻塞API。因此,“打开”未来的唯一方法是为它提供回调。以及在vert.x中提供的名为处理程序的回调函数。也许这不是最好的名字,像“callbackreceiver”这样的名字会更好。但这就是我们所拥有的。

 类似资料:
  • 问题内容: 我的Go Web应用程序中有一个相当快捷的错误处理程序,它会引发HTTP错误,记录响应的重要部分并提供错误模板。我想删除在处理程序中多次编写类似代码的重复: 我已经阅读了Error Handling and Go文章,其中定义了一个自定义HTTP处理程序类型,该类型将返回这样的错误类型/结构(甚至返回int,err): 但是我不确定如何保留现有的中间件功能/包装,使我可以像这样链接中间

  • 我试图在我的电脑(Windows 8 Pro 64x和XAMPP 3.2.1)上安装composer,因此我下载了Windows Installer并运行它,但出现以下错误: 缺少openssl扩展,这意味着不可能进行安全的HTTPS传输。 我搜索了这个问题并尝试了一些解决方法 extension=php\u openssl。动态链接库 在php中没有注释。C:\xampp\php\php中的in

  • 问题内容: 我不明白为什么Java注释中没有继承关系,就像Java类一样。我认为这将非常有用。 例如:我想知道给定的注释是否为验证者。通过继承,我可以自反地浏览超类,以了解此注释是否扩展了。否则,我该如何实现? 那么,谁能给我这个设计决定的理由? 问题答案: 关于未采用这种方式进行设计的原因,你可以在JSR 175设计常见问题解答中找到答案,其中说: 你为什么不支持注释子类型化(一种注释类型扩展了

  • 我想创建一个未来列表,每个未来都可能通过或失败,并整理成功未来的结果。我该怎么做? 问题1)我想等待每个未来完成2)我想从每个成功的未来收集返回值的总和,并忽略失败的回报值(所以我应该得到3)。

  • 我知道一些关于AbstractQueuedSynchronizer的详细信息。它是一个用于创建依赖于状态的类或同步器的框架。但我不理解在ThreadPoolExecutor的Worker中扩展这个类的意义。 由Worker类的签名可以推断出以下内容: > 提交新的可运行/可调用任务时,将创建一个新的工作对象。 Worker的新对象可以被视为新线程。 方法将添加新的worker(或只是一个任务)并在