Wenn Sie mit "Neustart" in diesem Moment ein neues 4-Sekunden-Intervall starten möchten, müssen Sie den Timer anhalten und neu starten.
function myFn() {console.log('idle');}
var myTimer = setInterval(myFn, 4000);
clearInterval(myTimer);
myTimer = setInterval(myFn, 4000);
Sie können auch ein kleines Timer-Objekt verwenden, das eine Rücksetzfunktion bietet:
function Timer(fn, t) {
var timerObj = setInterval(fn, t);
this.stop = function() {
if (timerObj) {
clearInterval(timerObj);
timerObj = null;
}
return this;
}
this.start = function() {
if (!timerObj) {
this.stop();
timerObj = setInterval(fn, t);
}
return this;
}
this.reset = function(newT = t) {
t = newT;
return this.stop().start();
}
}
Verwendung:
var timer = new Timer(function() {
}, 5000);
timer.reset(10000);
timer.stop();
timer.start();
Arbeitsdemo: https://jsfiddle.net/jfriend00/t17vz506/