gpt4 book ai didi

javascript - 多次调用函数中的 setTimeout

转载 作者:行者123 更新时间:2023-12-03 02:00:49 29 4
gpt4 key购买 nike

我有一个函数,用于在进程运行时向 div 添加状态指示器,并在该进程完成时将其删除。我遇到的问题是当多个函数正在处理并完成时,working_handle 仅删除第一个进程的工作状态。

如果我删除代码的 setTimeout 部分,它可以正常工作,但是我想要延迟它,因为它发生得太快,有点刺耳。

function working_handle(id, state) {

idh = id.replace(/^#/, '');

if (state === true) {
console.log('WORKING'+'-'+idh);
$(id).removeClass('error').addClass('working');
$('#status').removeClass(idh+'-error').addClass(idh+'-working');
} else {
console.log('DONE'+'-'+idh);
setTimeout(function() {
$(id).removeClass('working');
$('#status').removeClass(idh+'-working');
}, 2000);
}

}

最佳答案

idh 之前没有 var(或 constlet),这使其成为 implicit global 。这意味着对函数的每次调用都共享相同的闭包变量并覆盖其值。

要解决该问题,请对其进行声明,以便将其范围限定在函数内:

var idh = id.replace(/^#/, '');

我还建议将 "use strict" pragma 添加到 JS 文件的顶部,这将有助于捕获此类问题。隐式全局变量是个坏消息。

关于javascript - 多次调用函数中的 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50046956/

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