Javascript 如何在显示模块模式中使用clearInterval()
我正在编写一个计时器函数,它在显示模块模式中使用setInterval。我可以让计时器正常启动,但我无法停止间歇Javascript 如何在显示模块模式中使用clearInterval(),javascript,revealing-module-pattern,Javascript,Revealing Module Pattern,我正在编写一个计时器函数,它在显示模块模式中使用setInterval。我可以让计时器正常启动,但我无法停止间歇 var timer = (function() { var startTimer = function() { setInterval(function() { // Do Stuff }, 1000); }; var stopTimer = function() { clearInte
var timer = (function() {
var startTimer = function() {
setInterval(function() {
// Do Stuff
}, 1000);
};
var stopTimer = function() {
clearInterval(timer.startTimer());
};
return {
startTimer: startTimer,
stopTimer: stopTimer
};
})();
timer.startTimer(); // Works!
timer.stopTimer(); // Doesn't Work!
有什么想法吗?试试这个:
var timer = (function() {
var timerRef = null;
var startTimer = function() {
timerRef = setInterval(function() {
// Do Stuff
}, 1000);
};
var stopTimer = function() {
clearInterval(timerRef);
};
return {
startTimer: startTimer,
stopTimer: stopTimer
};
})();
var timer = (function() {
var intervalId;
var startTimer = function() {
intervalId = setInterval(function() {
// Do Stuff
}, 1000);
};
var stopTimer = function() {
clearInterval(intervalId);
};
return {
startTimer: startTimer,
stopTimer: stopTimer
};
})();
试试这个:
var timer = (function() {
var intervalId;
var startTimer = function() {
intervalId = setInterval(function() {
// Do Stuff
}, 1000);
};
var stopTimer = function() {
clearInterval(intervalId);
};
return {
startTimer: startTimer,
stopTimer: stopTimer
};
})();
startTimer()
必须返回调用setInterval()
的结果,但这也不起作用,因为在stopTimer()
中,您正在创建一个新的间隔,然后立即清除该间隔。您的var startTimer不是指间隔,而是指创建新间隔的函数。startTimer()
必须返回调用setInterval()
的结果,但这也不起作用,因为在stopTimer()
中,您正在创建一个新的间隔,然后立即清除该间隔。您的var startTimer不是指间隔,而是指一个创建新间隔的函数。