如何将状态对象/数据传递给(异步)ajax 回调

How to pass state object/data to an (async) ajax callback?

本文关键字:异步 回调 ajax 状态 对象 数据      更新时间:2023-09-26

我正在循环作用域中进行ajax调用,我需要成功回调才能使用调用它的正确"i"。

像这样(伪JavaScript代码):

for (i = 1 ; i <= 10 ; ++i)
{
   $.ajax( { ....,
         success : function(data) {
             // I want to use the correct i HERE
         }
   });
}

显然它不起作用,因为当调用成功回调时,i 值与回调不同步......

对此的规范解决方案是使用立即执行的函数表达式来创建闭包。

for (i = 1 ; i <= 10 ; ++i)
{
   (function (i) {
       $.ajax({
           success : function(data) {
               // I want to use the correct i HERE
           }
       });
    })(i);
}

只需就地创建一个函数作用域:

for (i = 1 ; i <= 10 ; ++i) {
    (function(i) {
        $.ajax({
             success : function(data) {
                console.log( i );
                 // I want to use the correct i HERE
             }
        });
    }(i));
}