多个异步ajax请求如何指定顺序执行,急!!!!
先上代码:
function loads(){
var initPath = 'http://192.168.81.177:8089/di-data-service/';
var reports = ['cpu_report','mem_report','load_report','network_report'];
var currentPath = initPath + 'r=day&json=1&cName=' ;
$.each(reports,function(index,report){
rendering( currentPath +report , index );
})
}
function rendering(data , index ){
$.ajax({
url: url,
type : "get",
dataType:'jsonp',
jsonp:"jsonpCallback",
success: function(result) {
//parse result , logic
//logicFun(result , index );
console.log('rendering - '+index);
}
}
function logicFun(data , index ){
//parse data , logic
console.log('logicFun - '+ index );
}
页面在加载完毕后执行loads函数,进行页面数据的渲染,需要注意到的是:我需要最终在控制台(chrome测试)打印出来的是按照reports数组的升序,问题是:无论是否将逻辑操作进行封装(调用logicFun函数)打印出来的还是不封装,得到的结果都是乱序,我最终需要达到的目的是要升序,麻烦大神们帮忙给些意见。
PS:必须异步,页面请求比较多,同步会导致页面卡死。而异步就存在这个顺序问题,有看到些资料提到队列、绑定,不过本人没找到具体其他资料,如哪位大神知道,还望帮忙解惑,谢谢啦!紧急贴!
------解决思路----------------------
看下这个http://www.jb51.net/shouce/jquery1.82/jQuery.when.html
http://www.cnblogs.com/charling/p/3411385.html
------解决思路----------------------
自己写代码来控制执行循序,而不是直接for,each并发执行,做递归调用
function loads() {
var initPath = 'http://192.168.81.177:8089/di-data-service/';
var reports = ['cpu_report', 'mem_report', 'load_report', 'network_report'];
var currentPath = initPath + 'r=day&json=1&cName=';
rendering(currentPath, 0, reports);
/*
$.each(reports, function (index, report) {
rendering(currentPath + report, index);
})*/
}
function rendering(currentpath, index,reports) {
$.ajax({
url: currentpath + reports[index],
type: "get",
dataType: 'jsonp',
jsonp: "jsonpCallback",
success: function (result) {
//parse result , logic
//logicFun(result , index );
console.log('rendering - ' + index);
index++;
if (index
}
});
}
function logicFun(data, index) {
//parse data , logic
console.log('logicFun - ' + index);
}
------解决思路----------------------
将要发送的数据和地址放到一个数组里
每次ajax返回成功pop后递归执行发送方法试试