2017-09-22 3 views

Antwort

0

Sie können den aktuellen Timeout

var timer; 
$('#startTimer').click(function() { 
    timer = setTimeout(function(){ 
     //... 
    },5000) 
}); 

$('#endTimer').click(function() { 
    clearTimeout(timer); 
    timer = setTimeout(function(){ 
     //... 
    },0) 
}); 
+0

Können Sie Ihre genaue Anforderung posten und könnten Sie auch bitte Ihre Frage ausarbeiten? –

+0

Soweit ich verstanden habe, möchten Sie den Timer von 5s auf 0s ändern, damit Sie den alten Timer mit clearTimeout() zerstören und einen neuen Timer starten können. –

0

zerstören Wenn ich Sie richtig verstehe, wollen Sie eine Möglichkeit haben, die Funktion sofort anstatt zu warten, der Timer abläuft auszuführen.

Sie können Ihre Timer-Funktion außerhalb der Klick-Funktion definieren und sie als Argument einfügen. Sie müssen auch die timerId von der Click-Funktion zurückgeben, damit Sie den Timer löschen können.

So etwas sollte funktionieren:

var delayed = function() { 
    console.log("It happened late"); 
}; 

var click = function(a, b, delayed) { 
    if(a !== b) { 
    return setTimeout(delayed, 5000); 
    } 
    // If a and b are equal, we don't do anything 
    return null; 
}; 

var timerId = click(1, 2, delayed); 
if(timerId) { 
    clearTimeout(timerId); 
    setTimeout(delayed, 0); 
} 

Wenn Sie dies in der Konsole ausführen, wird der Text „Es geschah spät“ sofort ausgeführt wird, und es gibt keine verzögerte Ausführung der verzögerten Funktion.