- 在系统开发中(前台页面使用jquery)遇到了以下需求,要根据多个主机名称去得到每一个主机的设备id,
- 一开始我用的是在for循环里面发送多个ajax的请求方式,但这种方式有很多缺点,首先因为是异步,
- 可能造成请求结果丢失,其次如果将请求方式改为同步,则会造成浏览器假死现象。
- 后来经过百度+google,得到了一种比较好的解决方法,就是使用递归。代码如下:
- var currentIndex=0;//退出递归的条件变量
- function newRequest(){
- if(currentIndex>=infos.length){ //infos是存放主机名称的数组
- return;
- }
- var vmName = infos[currentIndex].name;
- $.ajax({
- url:"/cloudportal/rest/interfaces/getVwDeviceInfo?dev_name="+vmName,
- contentType:'application/json;charset=UTF-8',
- type:"get",
- dataType:"json",
- complete:function(a,b){
- currentIndex++;
- var json = $.parseJSON(a.responseText);
- if(json.success===true){
- var xmlDoc = $.parseXML(json.result);
- var $xml = $(xmlDoc);
- var $objid = $xml.find('objid');
- var objid = $objid.text();
- $("<option value=\\""+objid+"\\">"+dis_name+"</option>").appendTo($("#J_zhuji_name"));
- }
- newRequest();
- }
- });
- }
- newRequest();
- //该片段来自于http://www.codesnippet.cn/detail/250720134799.html
来源: http://www.codesnippet.cn/detail/250720134799.html