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

时间:2016-04-23 19:28:45

标签: javascript refactoring

我在库文件中有这两个函数。一个启动倒计时器,另一个停止。为了能够阻止它我需要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);
}; 

1 个答案:

答案 0 :(得分:2)

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