jQuery UI automatische Vervollständigung: Wie beurteilen Sie einen asynchronen Prozess starten und beenden, bevor es fertig ist
-
09-10-2019 - |
Frage
Ich bin mit jQuery UI automatische Vervollständigung einer Suchoberfläche zu bauen.
Ich habe eine benutzerdefinierte Funktion definiert, die Erträge der Suchergebnisse und Updates automatisch als Schlüssel wird jedoch gedrückt, manchmal benutzerdefinierte Funktion nicht abgeschlossen wird, bevor die nächste Taste gedrückt wird (dh es ist immer noch die Verarbeitung „Wash“, wenn ich schon geschrieben habe "Washi" (auf dem Weg zum Schreiben von "Washington").
würde ich jeden Anruf an die Autocomplete „Quelle“ Ereignis wie die vorherige Funktion (Wash) und starten Sie die neue Funktion (Washi) abzubrechen. Mit der nächsten Rufabstellung Funktion (Washi) und Start-Funktion (Washin) und so weiter.
Wie wird diese Art der Sache getan?
Lösung
Es soll möglich sein, so etwas zu tun:
var lastXhr;
$( "#myAutocomplete" ).autocomplete({
source: function( request, response ) {
if (lastXhr) lastXhr.abort();
lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
if ( xhr === lastXhr ) {
response( data );
}
});
}
});
die lastXhr
var speichert die aktuelle xhr Anfrage. Wenn es eine Menge ist und die Quelle-Funktion aufgerufen wird, dann bricht er die lastXhr Anfrage und macht einen neuen. Wenn die Ajax-Anforderung zurückkehrt, wenn stellen Sie sicher, dass es stimmt mit dem lastXhr, wenn nicht, dann ist es nicht die response()
Funktion aufrufen.