删除两个函数使用的全局变量
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);
我在库文件中有这两个函数。一个启动倒数计时器,另一个停止它。为了能够停止它,我需要 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);