ここでは、setTimeoutとclearTimeoutを使用してforループを停止できるかどうかをテストするコードを示します。 forループは、繰り返し実行されます。JavaScriptでホットキーを使用して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