1

我正在编写一个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!

有任何想法吗?

4

2 回答 2

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

})();
于 2015-07-15T09:37:38.510 回答
2

试试这个:

var timer = (function() {
    var intervalId;

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

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

    return {
        startTimer: startTimer,
        stopTimer: stopTimer
    };
})();
于 2015-07-15T09:37:58.957 回答