这是我的代码
$('.match-dates').on('afterChange', function () {
var currentSelectionDate = $('.match-dates .slick-current > div > div').attr('data-date');
var liveStatus;
if(currentSelectionDate == null){
liveStatus = 1;
$.get('/api/index.php?request=GetLiveMatchesSpecial', function ( data ) {
$('.lives').html(data);
});
} else {
liveStatus = 0;
$.get('/api/index.php?request=GetFixturesSpecial&date=' + currentSelectionDate, function ( data ) {
$('.lives').html(data);
});
}
if(liveStatus === 1){
console.log(liveStatus);
setInterval(function () {
$.get('/api/index.php?request=GetLiveMatchesSpecial', function ( data ) {
$('.lives').html(data);
});
}, 5000);
} else {
console.log(liveStatus);
clearInterval();
}
});
当var liveStatus = 0时,它仍然加载setInterval函数。 如您所见,我正在检查var liveStatus的值,它运行良好。 为什么我无法卸载以前加载的setInterval函数?
由于
答案 0 :(得分:1)
要使clearInterval
生效,您必须将之前要清除的setInterval
来电的结果传递给它。没有传递参数的clearInterval()
将不执行任何操作。例如:
let interval;
$('.match-dates').on('afterChange', function() {
var currentSelectionDate = $('.match-dates .slick-current > div > div').attr('data-date');
var liveStatus;
if (currentSelectionDate == null) {
liveStatus = 1;
$.get('/api/index.php?request=GetLiveMatchesSpecial', function(data) {
$('.lives').html(data);
});
} else {
liveStatus = 0;
$.get('/api/index.php?request=GetFixturesSpecial&date=' + currentSelectionDate, function(data) {
$('.lives').html(data);
});
}
if (liveStatus === 1) {
console.log(liveStatus);
interval = setInterval(function() {
$.get('/api/index.php?request=GetLiveMatchesSpecial', function(data) {
$('.lives').html(data);
});
}, 5000);
} else {
console.log(liveStatus);
clearInterval(interval);
}
});
答案 1 :(得分:0)
setInterval()
方法重复调用函数或执行代码段,每次调用之间有固定的时间延迟。
所以每隔5000ms编写一次setInterval代码就会被调用。
因此如果$('.match-dates').on('afterChange', function ()
liveStatus
被0
作为setInterval()
触发一次就足够了,那么您的setTimeout
函数将每5秒调用一次。
可能应该尝试使用setTimeout()
。
setTimeout(function() {
$.get('/api/index.php?request=GetLiveMatchesSpecial', function(data)
{
$('.lives').html(data);
});
}, 5000);
方法设置一个计时器,在计时器到期后执行一次函数或指定的代码。
{{1}}