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

Remove a global variable used by two functions

本文关键字:全局变量 函数 两个 删除      更新时间:2023-09-26

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

实用工具.js

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

傅.js

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