gpt4 book ai didi

javascript - 如何在 JavaScript 中使用热键停止 for 循环

转载 作者:行者123 更新时间:2023-12-01 03:54:42 24 4
gpt4 key购买 nike

这是我一直在测试的一段代码,用于检查是否可以使用 setTimeout 和clearTimeout 停止 for 循环。 for 循环不断运行。

var ticket, key;
$(document).on("keydown", function(e){
if (e.key == "m") ticket = setTimeout(runMe,0);
if (e.key == "a") {clearTimeout(ticket); key = "a";}
})

function runMe(){
for (var i=0; i < 1000000; i++){
if (key == "a") break; // doesn't work
myFunct(i);
}
}

function myFunct(i){
console.log(i);
}
<小时/>
var ticket, key, i=0;
$(document).on("keydown", function(e){
if (e.key == "m") ticket = setInterval(runMe,0,i++);
if (e.key == "a") {clearInterval(ticket); key = "a";}
})

function runMe(i){
console.log(i);
//myFunct(i);

}

function myFunct(i){
console.log(i);
}

最佳答案

您无法使用异步代码停止同步代码,因为异步代码只有在您返回主事件循环时才会执行。

如果您想重复运行某些内容,请使用setInterval,然后在事件发生时清除它。

var counter = 0;
var interval;

function runMe() {
if (counter == 1000) {
clearInterval(interval);
} else {
counter++;
$("#output").text(counter);
}
}

$(document).on("keydown", function(e) {
if (e.key == 'm') {
interval = setInterval(runMe, 10);
} else if (e.key == 'a') {
clearInterval(interval);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>

关于javascript - 如何在 JavaScript 中使用热键停止 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869486/

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