简体   繁体   English

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

[英]How to Use clearInterval() Within Revealing Module Pattern

I'm writing a timer function that uses setInterval within a revealing module pattern. 我正在编写一个在显示模块模式中使用setInterval的计时器函数。 I can get the timer to start fine, but I'm having trouble stopping the interval. 我可以使计时器开始正常运行,但无法停止间隔。

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!

Any ideas? 有任何想法吗?

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
  };

})();

Try this: 尝试这个:

var timer = (function() {
    var intervalId;

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

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM