ame*_*ser 6 javascript timer settimeout javascript-namespaces
我正努力成为一个好公民,并尽可能地远离全球范围.有没有办法访问不在全局范围内的setTimeout变量?
那么,在这个例子中,有人会如何取消'计时器'?
myObject.timedAction = (function(){
var timer;
return function(){
// do stuff
// then wait & repeat
timer = setTimeout(myObject.timedAction,1000);
};
})();
Run Code Online (Sandbox Code Playgroud)
我已经尝试过clearTimeout(myObject.timedAction.timer,1000);(没有成功),也不确定还有什么可以尝试.
小智 4
除非您有对 的引用,否则您不能timer这样做,但您没有引用,因为您将其声明为作用域中的变量。你可以这样做:
myObject.timedAction = (function(){
return function(){
// do stuff
// then wait & repeat
myObject.timedAction.timer = setTimeout(myObject.timedAction,1000);
};
})();
clearTimeout(myObject.timedAction.timer);
Run Code Online (Sandbox Code Playgroud)
请注意,上述代码只允许一个计时器。如果您需要引用多个计时器,则需要对其进行调整。