异步JavaScript变量覆盖

21 浏览
0 Comments

异步JavaScript变量覆盖

这段代码存在问题,当调用异步函数时,变量被覆盖了。如何修复?

代码:

for (x in files) {
 asynchronousFunction(var1, var2, function(){
      console.log(x.someVaraible);
  }); 
}

现在问题在于,当异步函数中的回调函数被调用时,x.files变量已经被更新为json数组files中的下一个变量。我希望变量包含以前的值。

回调函数中的变量数量不能更改,因此不能在回调函数中发送变量名。

admin 更改状态以发布 2023年5月24日
0
0 Comments

你需要从回调函数所创建的闭包中解开 x。简短的回答:

for (x in files) {
    asynchronousFunction(var1, var2,
        (function(y){
            return function(){
                console.log(y.someVaraible);
            }
        })(x)
    ); 
}

对于更长的回答和解释,请参见我对之前一个问题的回答:请解释循环中使用JavaScript闭包的作用

0