卤蛋磨磨唧唧写了一个礼拜没弄好隔壁大神一两句话点醒梦中人,写的不好地方还望各位大神见谅,小的才学写博客还请见谅。
最后在说一句,根据业务需求选择Ajax同步的解决方案 , 这不一定适合所有的同步。
参考链接: http://www.jquery123.com/category/deferred-object/
function getData(urls){
var logicalIdData = new Array();
var promises = [];
for(var i = 0 ; i < urls.length ; i++){
promises.push($.ajax({type: "get",
url: urls[i],
data: "id=1",dataType:'json'
}));
}
/** 一下代码才是重头戏 **/
//这段代码大致意思是 上面Ajax所以请求完成返回了 才执行下面的(延迟执行)。
$.when.apply(null, promises ).done(function() {
//Ajax 请求完成后返回的状态 , 还有数据。 不懂得可以Js 调试下 。
for(var i = 0 ; i < arguments.length; i++){
if("success" == arguments[i][1]){
logicalIdData[i] = arguments[i][0];
}
}
//TODO 业务员代码块
return logicalIdData; // 实际笔者是咋这写的业务逻辑的,不是返回。
})
}
以上给各位的是一种解决方案, 还有一种是 使用同步的方法编写,但是同步的方案会让浏览器有卡顿的情况出现。