gpt4 book ai didi

Javascript:如何清除非全局(封闭)setTimeout?

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:37 29 4
gpt4 key购买 nike

我正在努力成为一名好公民,并尽可能远离全局范围。有没有办法访问不在全局范围内的 setTimeout 变量?

因此,在此示例中,某人将如何取消“计时器”?

myObject.timedAction = (function(){
var timer;
return function(){
// do stuff

// then wait & repeat
timer = setTimeout(myObject.timedAction,1000);
};
})();

我已经尝试了 clearTimeout(myObject.timedAction.timer,1000);(没有成功),但不确定还能尝试什么。

最佳答案

除非您有对 timer 的引用,否则您不能这样做,因为您将其声明为作用域中的变量。你可以这样做:

myObject.timedAction = (function(){
return function(){
// do stuff

// then wait & repeat
myObject.timedAction.timer = setTimeout(myObject.timedAction,1000);
};
})();

clearTimeout(myObject.timedAction.timer);

请注意,上面的代码将只允许使用一个定时器。如果您需要引用多个计时器,则需要对其进行调整。

关于Javascript:如何清除非全局(封闭)setTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com