我想要一个函数来设置Ajax和重载计时器。下面的代码不会破坏以前的函数调用计时器,所以每次调用它时我都会得到另一个计时器。我怎么能破坏以前的计时器?
function initNowPlayingMeta(station) {
$('#cancion').children().remove();
$('#cancion').load('sonando.php?emisora=' + station);
var prevNowPlaying = setInterval(function () {
$('#cancion').load('sonando.php?emisora=' + station);
}, 5000);
}
答案 0 :(得分:31)
您需要将定时器引用存储在局部范围之外的某处(这实际上意味着在函数外部使用var
声明它)。然后,使用clearInterval
清除它:
var prevNowPlaying = null;
function initNowPlayingMeta(station) {
if(prevNowPlaying) {
clearInterval(prevNowPlaying);
}
$('#cancion').children().remove();
$('#cancion').load('sonando.php?emisora=' + station);
prevNowPlaying = setInterval(function () {
$('#cancion').load('sonando.php?emisora=' + station);
}, 5000);
}
答案 1 :(得分:4)
答案 2 :(得分:0)
您需要明确清除计时器。
var prevNowPlaying;
function initNowPlayingMeta(station) {
$('#cancion').children().remove();
$('#cancion').load('sonando.php?emisora=' + station);
if (prevNowPlaying === undefined) clearInterval(prevNowPlaying);
prevNowPlaying = setInterval(function () {
$('#cancion').load('sonando.php?emisora=' + station);
}, 5000);
}