Verzögern Sie Multifunktionsaufrufe mithilfe von Etiketten
Dies ist die Lösung, mit der ich arbeite. Dies verzögert die Ausführung einer beliebigen Funktion . Dies kann die Keydown-Suchabfrage sein, möglicherweise das schnelle Klicken auf die vorherigen oder nächsten Schaltflächen (die andernfalls mehrere Anfragen senden würden, wenn schnell kontinuierlich geklickt wird, und schließlich nicht verwendet werden). Dabei wird ein globales Objekt verwendet, das jede Ausführungszeit speichert und mit der aktuellsten Anforderung vergleicht.
Das Ergebnis ist also, dass nur der letzte Klick / die letzte Aktion tatsächlich aufgerufen wird, da diese Anforderungen in einer Warteschlange gespeichert sind, und dass nach Ablauf der X Millisekunden keine andere Anforderung mit derselben Bezeichnung in der Warteschlange vorhanden ist!
function delay_method(label,callback,time){
if(typeof window.delayed_methods=="undefined"){window.delayed_methods={};}
delayed_methods[label]=Date.now();
var t=delayed_methods[label];
setTimeout(function(){ if(delayed_methods[label]!=t){return;}else{ delayed_methods[label]=""; callback();}}, time||500);
}
Sie können Ihre eigene Verzögerungszeit einstellen (optional, standardmäßig 500 ms). Und senden Sie Ihre Funktionsargumente "abschließend".
Zum Beispiel, wenn Sie die folgende Funktion aufrufen möchten:
function send_ajax(id){console.log(id);}
Um mehrere send_ajax-Anforderungen zu vermeiden, verzögern Sie sie mit:
delay_method( "check date", function(){ send_ajax(2); } ,600);
Jede Anfrage, die das Label "Prüfdatum" verwendet, wird nur ausgelöst, wenn innerhalb des Zeitrahmens von 600 Millisekunden keine andere Anfrage gestellt wird. Dieses Argument ist optional
Beschriften Sie die Unabhängigkeit (rufen Sie dieselbe Zielfunktion auf), führen Sie jedoch beide aus:
delay_method("check date parallel", function(){send_ajax(2);});
delay_method("check date", function(){send_ajax(2);});
Dies führt dazu, dass dieselbe Funktion aufgerufen wird, sie jedoch unabhängig voneinander verzögert werden, da ihre Beschriftungen unterschiedlich sind