暂停Javascript执行直到按下按钮

时间:2012-04-28 18:32:31

标签: javascript html

我正在为我的Algorithms类创建一个Sudoku创建器的可视化(在Javascript中)。该算法运行良好,但我找不到暂停执行的方法。

目前,我正在使用prompt()暂停,但这很笨重而烦人。除了连续while循环之外,有没有办法暂停直到运行另一个函数(通过HTML按钮)?

我可以发布代码,但我认为不需要。我目前没有使用jQuery,但如果需要,我可以。

2 个答案:

答案 0 :(得分:8)

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!!!" />

Live DEMO

答案 1 :(得分:0)

如果您要暂停的是一个本来会循环的功能,我会想出一个很好的解决方案:

<强> 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();

CodePen: https://codepen.io/liranh85/pen/baVqzY?editors=1010