我在清除正在使用的逻辑中的间隔时遇到问题。 clearInterval 没有像我想象的那样工作。关于如何将我的 logiuc 合并到下面以便 clearInterval 可以工作有什么建议吗?当发生变化时会调用toggleInterval。
var interval;
function toggleInterval(setting, interval) {
switch (setting) {
case SET_INTERVAL:
interval = setInterval(function() {
poll(true, interval);
}, 5000);
break;
case CLEAR_INTERVAL:
clearInterval(interval);
break;
}
}
function poll(polled, interval) {
if (!polled) {
$pollPromise = $.ajax({
url: '/stuff/',
});
$pollPromise.done(success);
function success(data) {
if (data.success) {
// .... DO stuff
toggleInterval(CLEAR_INTERVAL, interval);
}
return;
}
}
}
最佳答案
当调用设置的间隔时,您正在创建一个新的间隔来轮询。 您需要先清除间隔,然后创建新间隔。
case SET_INTERVAL:
interval = setInterval(function() {
poll(true, interval);
}, 5000);
break;
应该改为
case SET_INTERVAL:
clearInterval(interval); <-----
interval = setInterval(function() {
poll(true, interval);
}, 5000);
break;
关于javascript - 清除间隔逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524185/