這是我測試過的一段代碼,用於檢查是否可以使用setTimeout和clearTimeout停止for循環。 for循環保持運行。如何使用JavaScript中的Hotkey停止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);
}
你不能。 Javascript是單線程的。直到你從Javascript返回到主事件循環,異步代碼纔會運行。 – Barmar
有沒有其他的方法來完成這個? – user42826
使用'setInterval()'重複運行代碼,'keydown'處理程序可以使用'clearInterval()'來停止它。 – Barmar