Вопрос по javascript, html – Приостановка выполнения Javascript до нажатия кнопки

6

Я создаю визуализацию создателя судоку для своего класса Algorithms (в Javascript). Алгоритм работает отлично, но у меня возникают проблемы с поиском способа приостановить выполнение.

В настоящее время я используюprompt() сделать паузу, но это громоздко и раздражает. Есть ли способ сделать паузу, пока не будет запущена другая функция (через кнопку HTML), кроме непрерывнойwhile цикл?

Я могу опубликовать код, но я не думаю, что это необходимо. В настоящее время я не использую jQuery, но могу при необходимости.

нет потому чтоwindow.stop() не останавливает выполнение скрипта, останавливает загрузку окна, аналогично кнопке остановки браузера. keune

Ваш Ответ

2   ответа
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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded SomeKittens
Error: User Rate Limit Exceeded SomeKittens
Error: User Rate Limit ExceededsetTimeout(foo)Error: User Rate Limit ExceededsetTimeout(flag).
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

Похожие вопросы