繁体   English   中英

window.setTimeout没有读取正确的值

[英]window.setTimeout doesn't read the correct values

这是代码

var _d=1000;
for(var ii=0; ii<4; ii+=1){
    console.log(_d*ii);
    window.setTimeout(applyState(ii,_d),_d*ii);
} 

我希望applyState()函数被调用4次,它们之间有1秒的延迟,真正发生的是所有的都被立即调用。

()运算符调用该函数,应该传递函数本身,否则函数的返回值传递给setTimeout函数。 但这并不能完全解决问题。 for block不会创建新范围。 您可以使用自调用功能:

var _d=1000;
for(var ii=0; ii<4; ii+=1){
    (function(a) {
         console.log(_d * a);
         window.setTimeout(function() {
            applyState(a,_d);
          },_d*a);    
    })(ii);
} 

你需要将一个函数传递给setTimeout,你当前正在传递applyState的返回值(ii,_d)

尝试

window.setTimeout(function(){applyState(ii, _d);}, _d*ii)

除非applyState实际上不需要参数,在这种情况下你可以使用

window.setTimeout(applyState, _d*ii)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM