删除两个函数使用的全局变量

Remove a global variable used by two functions

我在库文件中有这两个函数。一个启动倒数计时器,另一个停止它。为了能够停止它,我需要 timeInterval 的引用,因此必须将其设为全局。当然这不是正确的做法。如果这些功能在单独的实用程序文件中,应该如何处理?谢谢

var timeInterval;

exports.stopTimer = function() {
  clearInterval(timeInterval);
};

exports.startTimer = function(duration, interval, displayElem, cbFinished, cbInterval) {
    var timer = duration * 60,
        interval = interval * 60,
        minutes,
        seconds;
        timeInterval = setInterval(function() {
        minutes = parseInt(timer / 60, 10);
        seconds = parseInt(timer % 60, 10);
        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;
        displayElem.text = minutes + ":" + seconds;

        if (--timer < 0) {
           clearInterval(timeInterval);
           if (cbFinished) {
             cbFinished();
           }
        }
        if (timer == interval) {
           if (cbInterval) {
             cbInterval();
           }
        }        
        }, 1000);
}; 

使 startTimer 返回一个区间并 stopTimer 接受一个参数。

utils.js

exports.startTimer = function (...) {
    return setInterval(function () {
        ...      
    }, 1000);
};

exports.stopTimer = function (interval) {
    clearInterval(interval);
};

foo.js

var utils = require('./utils');
var timer = utils.startTimer();
utils.stopTimer(timer);