先看一个场景

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("----");
        });
}
 
我们期望的是
js:如何在循环异步请求的每次返回中添加想要的值

 

然而实际上是

js:如何在循环异步请求的每次返回中添加想要的值

 

如何达到实际目的呢?先给出解决方法,再慢慢解释

使用闭包,或者简单说,使用函数,根据作用域,控制好返回回调函数中数据的值

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,因为代码都循环结束了,才一起发送的请求
然后我简单的画了两张图,便于理解
js:如何在循环异步请求的每次返回中添加想要的值

 

js:如何在循环异步请求的每次返回中添加想要的值

 

 

相关文章:

  • 2022-12-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2022-01-18
猜你喜欢
  • 2021-06-16
  • 2022-12-23
  • 2021-12-18
  • 2022-12-23
  • 2021-04-15
  • 2021-07-16
  • 2022-12-23
相关资源
相似解决方案