如何在javascript中暂停自调用函数

时间:2014-12-16 04:16:16

标签: javascript

我的幻灯片正在持续运行,无需用户互动。由于节目全屏播出,所以没有控件。但是,Occasionnaly用户应该能够冻结节目,以防她想要更仔细地检查图片[艺术品]。我想知道是否可以通过添加一个eventListener(keydown)来启用用户来切换,比如空格键(Keycode == 32)来冻结或继续显示。相关的代码:

<body>
...

(function loop() {
  rantime = Math.round(Math.random() * (9000 - 2000)) + 1000;
  setTimeout(function() {
        rotateImage();
        loop();
  }, rantime);
})(); 

到目前为止,我没有找到解决这个问题的任何建议。 [clearTimeout,如果可能的话,只跳过下一个当前图像]切换点当然是用户可以无限期推迟节目的延续,而不是完成节目。 任何帮助,将不胜感激。 Wimsch

1 个答案:

答案 0 :(得分:1)

你应该可以使用暂停标志:

var paused = false;

document.onkeydown = function(evt) {
    evt = evt || window.event;
    if (evt.ctrlKey && evt.keyCode == 32) {
        paused = !paused;
    }
};

(function loop() {
  rantime = Math.round(Math.random() * (9000 - 2000)) + 1000;
  setTimeout(function() {
        if (!paused) {
            rotateImage();
        }
        loop();
  }, rantime);
})();