在系统开发中(前台页面使用jquery)遇到了以下需求,要根据多个主机名称去得到每一个主机的设备id,
一开始我用的是在
for
循环里面发送多个ajax的请求方式,但这种方式有很多缺点,首先因为是异步,
可能造成请求结果丢失,其次如果将请求方式改为同步,则会造成浏览器假死现象。
后来经过百度+google,得到了一种比较好的解决方法,就是使用递归。代码如下:
递归的好处就是可以知道什么时候继续循环,什么时候执行完毕,并回调后面的流程
var currentIndex=0;//退出递归的条件变量
var data = {}; function newRequest(){ if(currentIndex>=data.length){ return; //callback } var name = data[currentIndex].name; $.ajax({ url: url type: 'get', timeout: 500, async: true, dataType: 'json', complete:function(XMLHttpRequest,textStatus){ if (textStatus === "success") {
var res = $.parseJSON(XMLHttpRequest.responseText);
// callback
}
newRequest();
}
});
}
newRequest();