在外面定义一个空数组,然后做一个ajax请求,请求内再嵌套一个请求,最终拼接成一个三个对象插入空数组。
最终出来的结果顺序都是不一样的,因为for循环执行,但是ajax请求是异步的。最终结果受for循环影响,每次获得的数组结果里面的对象字段顺序都不一样要怎么解决。
代码示例:
$.ajax({
url: 'http://120.76.75.179:5000/service/device_access/realData',
type: 'GET',
data: {
access_token: 'cbc7970472d055c802c2f50646da0d44179bdde05bc100d1e50c679103ab0bba8cb6ee7a63a4a4875a',
did: '000200014611127'
},
success: function(data) {
console.log(1,data);
var devId_arr = (data.collectdids.v).split(',');
var devDetail_arr = [];
for(var val in devId_arr) {
var devDetail_obj = {};
// 获取第二个接口里面的设备名称
$.ajax({
url: 'http://120.76.75.179:5000/service/device_register/get_device_info_bypid',
type: 'GET',
data: {
access_token: 'cbc7970472d055c802c2f50646da0d44179bdde05bc100d1e50c679103ab0bba8cb6ee7a63a4a4875a',
pid: devId_arr[val]
},
success:function(res){// console.log(2,res);
devDetail_obj.deviceName = res[0].name;
}
})
// 获取第三个接口里面需要的值
$.ajax({
url: 'http://120.76.75.179:5000/service/device_access/realData',
type: 'GET',
data: {
access_token: 'cbc7970472d055c802c2f50646da0d44179bdde05bc100d1e50c679103ab0bba8cb6ee7a63a4a4875a',
did: devId_arr[val]
},
success:function(res){ // console.log(3,res);
devDetail_obj.deviceID = devId_arr[val];
devDetail_obj.deviceStatus = res.totalstatus.v;
devDetail_obj.countTotal = res.count.v;
devDetail_arr.push(devDetail_obj);
}
});
}
console.log(devDetail_arr.length)
console.log(devDetail_arr)
}
})
})
解决Ajax异步请求导致的数据顺序问题
博客讨论了在JavaScript中使用Ajax进行多级异步请求时遇到的问题,即由于Ajax请求的异步性质,导致最终插入数组的对象顺序不一致。文章通过一个示例代码展示了如何在外层定义一个空数组,然后在内部进行嵌套的Ajax请求来获取数据并填充到数组中。由于for循环和异步请求的组合,每次运行时数组内的对象字段顺序可能会变化。博主寻求解决方案以确保数据顺序的一致性。
2009

被折叠的 条评论
为什么被折叠?



