Bro*_*ams 3 javascript ajax jquery closures callback
我需要将额外的变量传递给jQuery,ajax回调函数.
例如,给定:
while (K--)
{
$.get
(
"BaseURL" + K,
function (zData, K) {ProcessData (zData, K); }
);
}
function ProcessData (zData, K)
{
console.log (K);
}
Run Code Online (Sandbox Code Playgroud)
ProcessData() 每次都会报告0(或K的最后一个值).
如何确保ProcessData()火灾与K的正确值相关或可以获得?
没有包装$get()函数有没有办法做到这一点?
不会.由于闭包的工作方式,所有内部函数都将关闭相同的K变量(最终等于0).您需要在某处创建一个额外的间接级别来创建单独的范围.例如:
while (K--)
{
(function(K)
{
$.get
(
"BaseURL" + K,
function (zData, status) {ProcessData (zData, K); }
);
})(K);
}
Run Code Online (Sandbox Code Playgroud)
此外,成功函数的第二个参数不应该被称为K.该参数将获得状态,然后将影响所需的K.