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