gpt4 book ai didi

javascript - setTimeout 在 Javascript 中触发两次或不触发

转载 作者:行者123 更新时间:2023-11-28 17:59:25 25 4
gpt4 key购买 nike

我有这个代码:

window.setTimeout(function() {
let sudokuBodyWidth = $sudokuBody.outerWidth(true);
let sudokuBodyHeight = $sudokuBody.outerHeight(true);

console.log(sudokuBodyWidth + ',' + sudokuBodyHeight);

$sudoku.hide();
$welcomeOverlay.css({
width: sudokuBodyWidth,
height: sudokuBodyHeight
}).show();
}, 800);

window.clearTimeout();

我将此代码放入 setTimeout 中,因为加载 DOM 需要花费大量时间,因此 JS 代码执行得太早,并返回 0 值(这是一个巨大的代码库,我不是'允许'更改站点结构以使 JS 稍后加载)。

问题是这段代码运行了两次。首先,它返回正确的结果,但紧接着正确值之后的两个变量都返回 0。正如您所看到的,我添加了一个clearTimeout来防止执行两次。但它一直执行两次。

我也尝试过:

let welcomeTimeout = setTimeout(function() {
// the code
});

clearTimeout(welcomeTimeout);

执行此操作时,代码根本不执行。

最佳答案

window.clearTimeout() 不会执行任何操作,因为您没有传递由 window.setTimeout() 返回的timerId,并且这不应该运行两次,有一些东西否则女巫会导致该函数运行两次

在第二个中 clearTimeout(welcomeTimeout); 清除计时器,这就是您的代码不运行的原因

如果您想在文档完全加载后运行代码,则可以使用 window.onload = function(){...}

或者如果您使用的是 jQuery,那么您也可以尝试 $(document).ready(function(){...})

关于javascript - setTimeout 在 Javascript 中触发两次或不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848828/

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