Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在显示模块模式中使用clearInterval()_Javascript_Revealing Module Pattern - Fatal编程技术网

Javascript 如何在显示模块模式中使用clearInterval()

Javascript 如何在显示模块模式中使用clearInterval(),javascript,revealing-module-pattern,Javascript,Revealing Module Pattern,我正在编写一个计时器函数,它在显示模块模式中使用setInterval。我可以让计时器正常启动,但我无法停止间歇 var timer = (function() { var startTimer = function() { setInterval(function() { // Do Stuff }, 1000); }; var stopTimer = function() { clearInte

我正在编写一个计时器函数,它在显示模块模式中使用setInterval。我可以让计时器正常启动,但我无法停止间歇

var timer = (function() {
    var startTimer = function() {
        setInterval(function() {
            // Do Stuff
        }, 1000);
    };

    var stopTimer = function() {
        clearInterval(timer.startTimer());
    };

    return {
        startTimer: startTimer,
        stopTimer: stopTimer
    };
})();

timer.startTimer(); // Works!
timer.stopTimer(); // Doesn't Work!
有什么想法吗?

试试这个:

var timer = (function() {

  var timerRef = null;
  var startTimer = function() {
      timerRef = setInterval(function() {
          // Do Stuff
      }, 1000);
  };

  var stopTimer = function() {
      clearInterval(timerRef);
  };

  return {
      startTimer: startTimer,
      stopTimer: stopTimer
  };

})();
var timer = (function() {
    var intervalId;

    var startTimer = function() {
        intervalId = setInterval(function() {
            // Do Stuff
        }, 1000);
    };

    var stopTimer = function() {
        clearInterval(intervalId);
    };

    return {
        startTimer: startTimer,
        stopTimer: stopTimer
    };
})();
试试这个:

var timer = (function() {
    var intervalId;

    var startTimer = function() {
        intervalId = setInterval(function() {
            // Do Stuff
        }, 1000);
    };

    var stopTimer = function() {
        clearInterval(intervalId);
    };

    return {
        startTimer: startTimer,
        stopTimer: stopTimer
    };
})();
startTimer()
必须返回调用
setInterval()
的结果,但这也不起作用,因为在
stopTimer()
中,您正在创建一个新的间隔,然后立即清除该间隔。您的var startTimer不是指间隔,而是指创建新间隔的函数。
startTimer()
必须返回调用
setInterval()
的结果,但这也不起作用,因为在
stopTimer()
中,您正在创建一个新的间隔,然后立即清除该间隔。您的var startTimer不是指间隔,而是指一个创建新间隔的函数。