gpt4 book ai didi

javascript - 如何让setTimeout的刷新频率成为一个变量?

转载 作者:行者123 更新时间:2023-11-29 17:51:06 26 4
gpt4 key购买 nike

我希望我正在编写的函数能够自动调用自身。我希望能够在我第一次解析它时解析它调用自身的频率。然后它将在 JS setTimeout() 函数内部使用相同的值,以相同的频率再次重复调用自己。

因此您可以在下面的示例中看到我的内容:

function testFunction(refreshFrequ){
setTimeout(function() {
console.log("frequency: "+refreshFrequ);
testFunction(refreshFrequ);
}, refreshFrequ);
}

// run the 1st time
testFunction(5000);

问题是这不起作用,因为从它第二次运行开始,解析的超时没有被评估。控制台输出提供了这里发生的事情的线索:

frequency: undefined

我怎样才能让它工作,到目前为止没有任何帮助。

最佳答案

尝试 Window setInterval() Method反而。另见 this answerthis answer获取更多信息。

var autoInterval;
var elapsed = 0;

function myStartFunction(refreshFrequ) {
if (!autoInterval) {
autoInterval = setInterval(function() {
elapsed++;
document.getElementById("txt").innerHTML = refreshFrequ * elapsed + " elapsed.";
console.log("frequency interval: " + refreshFrequ + " x " + elapsed);
}, refreshFrequ);
}
}

function myStopFunction() {
if (autoInterval) {
clearInterval(autoInterval);
autoInterval = null;
elapsed = 0;
document.getElementById("txt").innerHTML = "Interval was reset.";
console.log("interval stopped");
}
}

myStartFunction(5000);
<p>The setInterval() method has started automatically.</p>

<button onclick="myStartFunction(1000)" title="Start with 1000 ms interval. Clicking this button while the event is active should not create a new interval instance.">Start</button> <button onclick="myStopFunction()" title="Click to stop and clear the interval instance.">Stop</button>

<p id="txt">0 elapsed.</p>

编辑:虽然没有提到潜在的重复函数调用,the other answer应该考虑在内,尤其是在事件可以任意执行的情况下。强加 if 语句是为了防止重复事件与原始实例叠加;否则,每个额外执行的功能都会产生一个独特的实例,然后可能会进一步创建不可阻挡的多个事件,所以我必须在信用到期的地方给予信用。感谢Tymek !

关于javascript - 如何让setTimeout的刷新频率成为一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725935/

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