您能否请一看这段代码,如果有办法检查天气setInterval()
是否真的被杀或仍然在后台处理中运行,请告诉我?
从技术上讲,我需要做的是每当.map
不在页面中时就杀死JS setinerval。我的理解是setInterval()
仍在运行2秒,因为if语句
setInterval(
function() {
if ($(".map")[0]) {
console.log("Map is in the Page");
} else {
//Stop Inreval
}
}, 2000);
setTimeout(function(){ $(".box").empty();
}, 9000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
<div class="map">Map in Here</div>
</div>
&#13;
答案 0 :(得分:1)
您需要调用clearInterval()
来停止执行间隔函数。
以下是一个例子:
let i = 3;
let interval = setInterval(function() {
if (i > 0) {
console.log("Running " + i--);
} else {
clearInterval(interval);
console.log("Stopped");
}
}, 2000);
答案 1 :(得分:1)
为了终止间隔或超时,您应该将其分配给变量以进行引用。具体功能包括:clearInterval(您的间隔参考变量名称)和clearTimeout(您的超时参考变量名称)。
var yourInterval = setInterval(
function() {
console.log("Still running?"); //for testing purpose.
if ($(".map")[0]) {
console.log("Map is in the Page");
} else {
clearInterval(yourInterval); //it kills this interval, if the interval already terminated, it won't do anything harm, nor produce an error message in the browser console.
}
}, 2000);
setTimeout(function(){ $(".box").empty();
}, 9000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
<div class="map">Map in Here</div>
</div>