异步JavaScript变量覆盖
- 论坛
- 异步JavaScript变量覆盖
21 浏览
异步JavaScript变量覆盖
这段代码存在问题,当调用异步函数时,变量被覆盖了。如何修复?
代码:
for (x in files) { asynchronousFunction(var1, var2, function(){ console.log(x.someVaraible); }); }
现在问题在于,当异步函数中的回调函数被调用时,x.files变量已经被更新为json数组files中的下一个变量。我希望变量包含以前的值。
回调函数中的变量数量不能更改,因此不能在回调函数中发送变量名。
admin 更改状态以发布 2023年5月24日
匿名的
0 Comments
你需要从回调函数所创建的闭包中解开 x
。简短的回答:
for (x in files) { asynchronousFunction(var1, var2, (function(y){ return function(){ console.log(y.someVaraible); } })(x) ); }
对于更长的回答和解释,请参见我对之前一个问题的回答:请解释循环中使用JavaScript闭包的作用