for循环异步调用接口,怎样判断数据已经返回完成?

在工作中遇到了一个for循环调用接口的例子:首先要根据一个集群ID,去调用接口查询此集群下的所有“命名空间”,接着再用for循环来一个个查询所有“命名空间”下的“实例”,eg:


大家应该看出问题了,最后那个函数里面最后一个 if 的写法是有问题的,因为接口的调用是异步执行的,一个命名空间的数据还没有返回,它就先直接走进去了。那我们该如何改写呢?也就是要加一个怎样的判断条件,才能控制它是在所有的接口数据都在执行完上一个 if 以后,再走这一个 if ?我们只需再加一个 变量即可:


再来看一种实现,如果需要提示用户和哪些实例冲突了,那么你就需要将冲突的实例保存到一个临时变量里。但你会发现需要穷尽所有的实例,才能确定冲突的实例。(性能问题,可想而知)


你可能感兴趣的:(js)