先看一个场景
var arr = ["a","b","c"]; for (var i in arr) { $.get("h.html", function (data) {//1 console.log(data); console.log(arr[i]); console.log("----"); }); }
如何达到实际目的呢?先给出解决方法,再慢慢解释
使用闭包,或者简单说,使用函数,根据作用域,控制好返回回调函数中数据的值
var arr = ["a","b","c"]; var b = 1000000000; for (var i in arr) { get(arr[i]);//使用闭包,使得每次请求返回某些想要的数据 } function get(retur) { $.get("h.html", function (data) {//2 console.log("func:"+data); console.log("func:"+retur); console.log("func:----"); }); }
下面是详细解释 首先清楚一点,异步请求理论上是在正常的js代码执行完毕之后才发送,所以不难理解为什么上述一直返回的是c,因为代码都循环结束了,才一起发送的请求