gpt4 book ai didi

javascript - 如何停止 Javascript 中的循环函数

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

我正在使用机器人控制 Raspberry Pi,并在实现之前模拟所有功能。

    function onFunction() {
console.log("LED ON");
}

function offFunction() {
console.log("LED OFF");
}
// blink:
function loop(){
onFunction();
setTimeout(offFunction, 500);

setTimeout(function(){ loop() }, 1000);
}

当我调用另一个函数时,我需要停止这个循环:

bot.hears(/off/i, (ctx) => {
//break blink;
offFunction();
});

我试图使用标签和中断,但它似乎不适用于函数。仅适用于 for、while 循环。

最佳答案

setTimeout 函数(与其对应的 setInterval 一起)返回一个 timeoutId。这必须与函数 clearTimeout 一起使用来取消超时(同样,使用 clearInterval 来取消间隔)。因此,代码应该变成

var loopTimeout;
var offTimeout;
function onFunction() {
console.log("LED ON");
}

function offFunction() {
console.log("LED OFF");
}
// blink:
function loop(){
onFunction();
offTimeout = setTimeout(offFunction, 500);

loopTimeout = setTimeout(function(){ loop() }, 1000);
}

bot.hears(/off/i, (ctx) => {
//break blink;
clearTimeout(offTimeout); // To try and prevent two 'offFunction' invocations
clearTimeout(loopTimeout); // To clear the loop
offFunction();
});

关于javascript - 如何停止 Javascript 中的循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726558/

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