jQuery UI automatische Vervollständigung: Wie beurteilen Sie einen asynchronen Prozess starten und beenden, bevor es fertig ist

StackOverflow https://stackoverflow.com/questions/4439953

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top