gpt4 book ai didi

java - *垂直x* : How to handle in synchronous code

转载 作者:行者123 更新时间:2023-12-02 02:13:57 24 4
gpt4 key购买 nike

我有一个方法可以有条件地进行异步调用。下面是它的简化版本。如果满足“条件”,我希望它返回。

private void myMethod(RoutingContext routingContext, Handler<AsyncResult<AsyncReply>> handler) {
//...
if (condition) {
// this does not work
handler.handle(Future.succeededFuture(new AsyncReply(200, "")));
}

// here I do an async call and use the handler appropriately
HttpClientRequest productRequest = client.getAbs(url, h -> h.bodyHandler(bh -> {
// works
handler.handle(Future.succeededFuture(new AsyncReply(200, "")));
}

}

我怎样才能做到这一点?

最佳答案

根据文档,您不能直接从事件循环调用阻塞操作,因为这会阻止它执行任何其他有用的工作。那么如何才能做到这一点呢?

这是通过调用executeBlocking来指定要执行的阻塞代码以及在执行阻塞代码时异步回调的结果处理程序来完成的。

            vertx.executeBlocking(future -> {
// Call some blocking API that takes a significant amount of time to return
String result = someAPI.blockingMethod("hello");
future.complete(result);
}, res -> {
System.out.println("The result is: " + res.result());
});

关于java - *垂直x* : How to handle in synchronous code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com