多个异步请求保证执行顺序:用递归

我们在编程的过程中可能会使用到一些异步的请求,而且可能会有多个,并且前后之后可能会有某种依赖:必须前一个执行成功,后面的才去调用,否则直接失败。这种问题的解决方案就是递归。

我在网上搜索的时候,搜到的都是一些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)。
请求成功后,根据索引来判断是否启动完毕还是继续递归调用。

猜你喜欢

转载自blog.csdn.net/ywg_1994/article/details/87950027