是否可以在javascript中模拟应用程序中的dev工具?

时间:2014-02-26 09:34:52

标签: javascript

是否有可能暂停javascript执行,直到按下某个特定按钮,或者超时...?

someCalls()
someCode()
...
stopUntilEvent() // could be after time, or in page button is pressed...
...
moreArbitraryCalls()

现在我能想到的唯一方法就是使用浏览器的alertconfirm对话框。有什么方法可以用类似的行为来创建我自己的对话框吗?

1 个答案:

答案 0 :(得分:0)

我不太确定你在问什么。

如果您希望在保持页面交互的同时停止执行某些代码,那么实际上并不是一种简单的方法。您可以采取任何想要暂停的进程,然后将其分解为一系列检查标志的步骤,然后继续执行或等待,直到标志的状态发生变化,偶尔通过setTimeout轮询标志。类似的东西:

<button id="pause">Pause</button>
<script>
var currentStep = 0,
  pauseButton = document.getElementById('pause'),
  pauseSteps = false,
  steps = [
    function () { /* step one */},
    function () { /* step two */},
    function () { /* etc. */}
  ],
  doSteps = function () {
    if (currentStep < steps.length) {
      if (!pauseSteps) {
        steps[currentStep]();
        currentStep += 1;
      } else {
        setTimeout(doSteps, 250);
      }
    }
  };

pauseButton.addEventListener('click', function (e) {
  var newText;
  e.preventDefault();

  newText = pauseSteps ? 'Resume' : 'Pause';
  pauseButton.textContent = newText;
  pauseSteps = !pauseSteps;
}, false);

doSteps();
</script>

如果您只想打破调试器,可以使用debugger; statement,它将暂停执行,就像您在调试器中手动设置断点一样。

相关问题