我有一个这样的功能,每3秒重复一次,就像这样:
function myFunction() {
// Do something sexy
var delay = 3000;
setTimeout(function() {
myFunction();
}, delay);
}
它在Bootstrap模态窗口内运行,并且仅应在该窗口打开时运行。
我尝试将延迟包装成类似以下内容:
if ($('#modal-task').hasClass('in')){
var delay = 3000;
setTimeout(function() {
myFunction();
}, delay);
}
但是问题是,如果模态被关闭并重新打开,则函数每次关闭和打开都会运行两次甚至更多次。
当模态关闭/不可见时,如何完全杀死函数?
答案 0 :(得分:1)
这可能有效,而不是if语句
function something_sexy () {
// Do something sexy
var delay = 3000;
setTimeout(function() {
myFunction();
}, delay);
}
while ($('#modal-task').hasClass('in')) {
something_sexy();
}
答案 1 :(得分:0)
当您关闭Bootstrap模型时,“ in”将从模型类中删除。因此,当关闭模型时,请清除超时。
喜欢。
function myFunction() {
// Do something sexy
console.log("test");
var delay = 3000;
//Assign setTimeout in variable timerval
let timerval = setTimeout(function() {
myFunction();
}, delay);
//when close the model clear the timeout
if (!$('.#modal-task').hasClass("in")){
clearTimeout(timerval );
}
}