我们在编程的过程中可能会使用到一些异步的请求,而且可能会有多个,并且前后之后可能会有某种依赖:必须前一个执行成功,后面的才去调用,否则直接失败。这种问题的解决方案就是递归。
我在网上搜索的时候,搜到的都是一些js请求ajax的相关结果,借鉴了人家的思想,实现了Java代码,特地分享出来。
项目背景:我使用是vertx框架,主要是解决了发布多个模块的问题。
vertx框架不知道没有关系,只需要了解它在启动的过程中需要发布多个模块,而发布过程是完全异步的,并且我有多个模块,且有依赖。
实现过程比较简单,直接贴代码
public class Test {
public static List<String> verticals=new ArrayList<>();
public static Vertx vertx = Vertx.vertx();
public static void main(String[] args) {
addVerticals();
deployVertical(0);
}
public static void addVerticals() {
verticals.add(Test1.class.getName());
verticals.add(Test2.class.getName());
}
public static void deployVertical(int index) {
vertx.deployVerticle(verticals.get(index), res -> {
if (res.failed()) {
//发布失败
System.out.println("Failed in deploy" + verticals.get(index));
System.exit(0);
} else {
//这边是成功
if (index==verticals.size()-1) {
System.out.println("vertx启动成功");
}else {
deployVertical(index+1);
}
}
});
}
}
主要是实现递归的方法deployVertical(int index)。
请求成功后,根据索引来判断是否启动完毕还是继续递归调用。