我正在爲我的算法類(使用Javascript)創建一個Sudoku創建器的可視化。該算法效果很好,但我無法找到暫停執行的方法。暫停Javascript執行,直到按下按鈕
目前,我使用prompt()
暫停,但這是龐大而煩人的。除了連續的while
循環以外,是否有任何方法可以暫停,直到另一個函數運行(通過HTML按鈕)?
我可以發佈代碼,但我不認爲這是必要的。我目前不使用jQuery,但如果需要,我可以。
我正在爲我的算法類(使用Javascript)創建一個Sudoku創建器的可視化。該算法效果很好,但我無法找到暫停執行的方法。暫停Javascript執行,直到按下按鈕
目前,我使用prompt()
暫停,但這是龐大而煩人的。除了連續的while
循環以外,是否有任何方法可以暫停,直到另一個函數運行(通過HTML按鈕)?
我可以發佈代碼,但我不認爲這是必要的。我目前不使用jQuery,但如果需要,我可以。
var flag = true;
function foo(){
if (flag){
// Do your magic here
...
...
setTimeout(foo, 100);
}
}
function stop(){
flag = false;
}
<input type="button" onclick="stop();" value="stop it!!!" />
我試圖避免在後臺啓動'while()'循環。有沒有其他方法? (如果沒有,這看起來不錯) – SomeKittens 2012-04-28 18:37:45
你的意思是'setTimeout(foo)',而不是'setTimeout(flag)'。 – DCoder 2012-04-28 18:39:43
@DCoder。是的,一分鐘前解決了。謝謝。 – gdoron 2012-04-28 18:43:10
如果你正在嘗試暫停的,否則一直循環的功能,我想出了一個很好的解決方案:
HTML
<div id="stuff">Doing stuff</div>
<button id="pause">Pause/Resume</button>
JS
var paused = false;
document.getElementById('pause').addEventListener('click', function() {
paused = !paused;
if (!paused) {
next();
}
});
function doStuff() {
// Do whatever you want here, then invoke next() for the next iteration of that function, for example:
// (Note that the window.setTimeout is NOT part of the solution)
window.setTimeout(function() {
document.getElementById('stuff').append('.');
next();
}, 300);
}
function next() {
if (!paused) {
doStuff();
}
}
doStuff();
沒有,因爲'window.stop()'不停止執行腳本,它加載,類似於瀏覽器的停止按鈕停止窗口。 – keune 2012-04-28 18:39:43