销毁以前的setInterval

Eri*_*tis 18 javascript

我想要一个函数来设置Ajax和重载计时器.下面的代码不会破坏以前的函数调用计时器,所以每次调用它时我都会得到另一个计时器.我怎么能破坏以前的计时器?

function initNowPlayingMeta(station) {
    $('#cancion').children().remove();
    $('#cancion').load('sonando.php?emisora=' + station);
    var prevNowPlaying = setInterval(function () {
        $('#cancion').load('sonando.php?emisora=' + station);
    }, 5000);
}
Run Code Online (Sandbox Code Playgroud)

Kyl*_*ild 37

您需要将定时器引用存储在局部范围之外的某处(这实际上意味着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);
}
Run Code Online (Sandbox Code Playgroud)


tob*_*ies 5

clearInterval

clearInterval(prevNowPlaying);

无论您想取消什么,您都还想从作用域中的先前调用进行prevNowPlaying