满意答案
zq252919011
2017.04.26
采纳率:51% 等级:11
已帮助:5095人
异步的话第一个ajax都没返回就已经执行你的log函数了,获取不到数据。同步的话网速慢浏览器会假死或者没有反应,因为要等待ajax请求完毕,网速慢你请求很多并且服务器处理速度慢基本要假死很久一段时间
改为异步,并且用一个状态记录住所有请求完毕后再执行log操作 function doAjax(arr1,callback) { doAjax.total = arr1.length;//记录总ajax请求数量,下面成功或者失败都-1,位0时再执行回调 var list_all = [],k=0;/// for (var i = 0; i < arr1.length; i++) { $.ajax({ method: 'GET', async: true,dataType:'json', // url: '/mainrver/ajax?key=' + arr1[i], url: 'data.txt' }).success(function (data) { _api_1 = data.data; for (var j = 0; j < _api_1.list.length; j++) { list_all[k] = _api_1.list[j]; k++; } doAjax.total--; if (doAjax.total == 0) callback(list_all); }).error(function () { doAjax.total--; if (doAjax.total == 0) callback(list_all); spinner.hintMsg(common.MESSAGE.network_err); }); } } doAjax([1, 2, 3], function (list_all) { console.log(list_all); console.log(list_all.length); });
00分享举报