gpt4 book ai didi

JavaScript - for 循环内的 setTimeout 函数导致代码在 for 循环完成之前执行

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:45 27 4
gpt4 key购买 nike

我有一个 for 循环,出于动画目的,我需要在其中延迟每次重复。如果我删除 setTimeOut 函数,则以下代码会正确循环并且变量会在循环中正确递增,然后执行底线。但是用setTimeoout函数,底线先执行,然后for循环执行了7次(应该是6次),每次都告诉我x = 6。显然我做错了。有什么想法吗?

for ( x = 0; x <= 5; x++) {
setTimeout(function() {
alert("For loop iteration #" + x);
}, 500 * x);
}
alert("Code to be executed after completed for loop");

最佳答案

您需要一个闭包来将当前 x 值保存在闭包上下文中。

 for (var x = 0; x <= 5; x++) {
(function(x) {
setTimeout(function(){
alert("For loop iteration #" + x);
if (x == 5) {
setTimeout(function(){
alert("Code to be executed after completed for loop");
});
}
}, 5 * x);

})(x);
}

关于JavaScript - for 循环内的 setTimeout 函数导致代码在 for 循环完成之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com