没有ID的clearTimeout

djs*_*ark 4 javascript timer settimeout

有没有办法清除setTimeout()它是否没有明确的ID?问题是我不允许更改已经运行的代码并在没有任何处理程序的情况下设置定时器.

JS为他们设置了"匿名处理程序"吗?这些计时器是否存放在任何地方?我可以获得任何这些属性(计时器即将调用的函数吗?它将被调用的时间?)

Nic*_*ver 19

不,你不能没有参考.你可以尝试一些真正的 hacky(不要这样做!它只是一个hackyness的例子)来清除所有的超时:

for(var i=0; i<100000; i++) clearTimeout(i);
Run Code Online (Sandbox Code Playgroud)

但同样,这不是万无一失,远远超出了黑客.

解?可以更改源,因此您可以正确执行此操作 - 或者查看是否可以覆盖创建计时器的功能.

  • 是的,这将是解决方案:争取改变源头。这将需要几个月的时间://感谢您的hackyness :) (2认同)
  • 你不需要经历 100000 次循环,你可以用最少的循环来做到这一点:`var i = setTimeout(function(){}); while(i--) clearTimeout(i);` (2认同)