如何解决使用setTimeout延迟循环迭代
| 我想在每次迭代中延迟my0ѭ循环。我尝试了以下方法:var o = 1;
while(o<4){
setTimeout(\"setupAnimation(o)\",2000);
//setupAnimation(o); //<--this works but everything happens att the same time
o++;
}
我也试图这样写,但也没有用:
var o = 1;
function repeatMe(){
setupAnimation(o);
o++;
setTimout(\'repeatMe()\',1000);
}
有什么建议么?
解决方法
“ 3”速度慢,难以调试并且存在潜在的安全问题(取决于数据来自何处)。不要使用它。 (将字符串传递给
setTimeout
使用代理人的eval
。)
而是将一个函数传递给setTimeout
。您需要使用闭包来捕获所传递函数的当前值o
。
您可能还应该在此处使用for
循环,而不是while
循环。语法更清晰。
function setupAnimationFactory(o) {
return function() {
setupAnimation(o);
}
}
for (var o = 0; o < 4; o++){
setTimeout(setupAnimationFactory(o),2000);
}
, 尝试这个:
var o = 1;
function repeatMe(){
setupAnimation(o);
o++;
setTimeout(function(){repeatMe();},1000);
}
repeatMe();
, 如果您想使用第二种方法,这里是有效的Javascript
<script type=\"text/javascript\">
var o = 1;
function repeatMe(){
setupAnimation(o);
o++;
setTimout(repeatMe(),1000);
}
function setupAnimation(o){
alert(o);
}
</script>
<a href=\'#\' onclick=\"repeatMe()\">Click Me</a>
, var o = 1; //Global Variable
var animTimerId; //Global Variable
function setupAnimation(o){
// Your code goes here
o++;
if(o == 4){
clearTimeout(animTimeoutId);
break;
}
}
function repeatMe(){
animTimeoutId = setTimeout(\"setupAnimation(o)\",2000);
}
, 您可以使用此:
setTimeout(function(){ myFunction(parameter)},timeoutLength);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。