如何清除类似于以下内容的匿名setInterval函数,以使 i 停止递增?
var i = 0;
setInterval(function(){
console.log(i);
i++;
}, 1000);
答案 0 :(得分:0)
您需要将其存储在变量中,然后将该变量传递到clearInterval
中。
var i = 0;
let variable = setInterval(function(){
i++;
console.log(i)
}, 1000);
//to clear interval after 5 seconds to check if it works
setTimeout(() => clearInterval(variable),5000)
答案 1 :(得分:0)
尽管如此,您可以通过临时修补window.setInterval
函数来完成此操作,以便捕获对计时器的引用。
以下是合并的示例,有关实现示例,请参见下文。
// Declare a variable to store the interval
let rogueInterval = null;
//Override the setInterval method
const oldSetInterval = window.setInterval;
window.setInterval = (...args) => {
rogueInterval = oldSetInterval(...args);
}
var i = 0;
setInterval(function() {
console.log(i);
i++;
}, 1000);
// Reset it
window.setInterval = oldSetInterval;
// Will clear your rogueInterval after 5 seconds
setTimeout(() => {
clearInterval(rogueInterval);
}, 5000);
听起来您正在通过script.src
包含脚本,因此,您需要先放置一个内嵌脚本标签才能覆盖setInterval
,然后再放置一个内嵌脚本标签以重置{{ 1}}:
setInterval
不幸的是,这种方法假设问题文件中只有一个<script> // JS that overrides the setInterval </script>
<script src="problem-file.js"></script>
<script> // JS that resets the setInterval </script>
,并且setInterval
本身并不是异步设置的。如果绝对需要,您可以将猴子补丁保留在原处,并检查传入的函数的字符串化版本,如果它符合某些条件,则将其捕获。