Vert.x 基本上所有的操作都是异步的,所以有必要学习一下Vert.x的异步协调。
Vert.x 异步协调
Vert.x的异步协调可以通过Future这个接口来构建:
public class FutureStarter {
public static void main(String[] args) {
Future<String> future = Future.future(event -> {
int i = new Random().nextInt();
if (i % 2 == 0) {
event.complete(String.format("生成了偶数是:%d", i));
return;
}
event.fail("生成偶数失败:" + i);
});
future.onSuccess(s -> {
System.out.println("OK:" + s);
}).onFailure(e -> {
System.out.println("Error: " + e.getMessage());
}).onComplete(r -> {
System.out.println("结果可能是String,可能是异常" + r);
});
}
}
运行结果:
有时候可能回执行多个异步操作,那么可以通过CompositeFuture
实现异步合并。
CompositeFuture.all(Arrays.asList(future1, future2, future3));
或者
CompositeFuture.any(Arrays.asList(f1, f2, f3));
或者
future1.compose(v -> return future2)
彩蛋:关注公众号、或小程序,阅读更多IT文章。