Вы можете просто отслеживать состояние:
var hasRun = false;
function CheckForZero () {
... snip ...
if (!hasRun) {
hasRun = true;
setInterval(CheckForZero, 30000);
}
}
Я бы также рекомендовал использовать setTimeout () вместо setInterval () / clearInterval () (так как его не нужно запускать периодически).).
Редактировать: я отредактировал приведенный выше код, чтобы отразить измененные требования ОП.Я добавил еще одну версию ниже, чтобы упростить тоже.
setTimeout(CheckForZero, 0); // OR just call CheckForZero() if you don't need to defer until processing is complete
function CheckForZero() {
... snip ...
setTimeout(CheckForZero, 30000);
}