问题由来:
今天Vert.x项目上这样写
方法处理成功后,程序走到打印 “回复成功”后竟然没有执行后面的commonJsonResponse方法,Future<Void> replyFuture = Future.future(); replyMsg(baseAppMsg).setHandler(as -> { if (as.succeeded()) { LOGGER.info("回复成功"); replyFuture.complete(); HttpUtils.commonJsonResponse(appResponse, SendResult.SUCCESS.getResultJson(null)); } else { HttpUtils.commonJsonResponse(appResponse, SendResult.FAILED_HANDLE.getResultJson(as.cause().getMessage())); LOGGER.info("回复微信用户失败:[{}]", as.cause().getMessage()); as.cause().printStackTrace(); } });
后来将replyFuture.complete()方法放在最后,如下:
Future<Void> replyFuture = Future.future(); replyMsg(baseAppMsg).setHandler(as -> { if (as.succeeded()) { HttpUtils.commonJsonResponse(appResponse, SendResult.SUCCESS.getResultJson(null)); LOGGER.info("回复成功"); replyFuture.complete(); } else { HttpUtils.commonJsonResponse(appResponse, SendResult.FAILED_HANDLE.getResultJson(as.cause().getMessage())); LOGGER.info("回复微信用户失败:[{}]", as.cause().getMessage()); as.cause().printStackTrace(); } });执行了并打印了。
那也就是说,replyFuture.complete()之后的代码将不执行。。。
WHY?待查