jQuery 1.5 fügt "Zurückgestellte Objekte" hinzu. Was sind sie und was genau machen sie?
quelle
jQuery 1.5 fügt "Zurückgestellte Objekte" hinzu. Was sind sie und was genau machen sie?
Zurückgestelltes Objekt
Ab jQuery 1.5 bietet das Objekt "Zurückgestellt" die Möglichkeit, mehrere Rückrufe in selbstverwalteten Rückrufwarteschlangen zu registrieren, Rückrufwarteschlangen entsprechend aufzurufen und den Erfolgs- oder Fehlerstatus einer synchronen oder asynchronen Funktion weiterzuleiten.
Aufgeschobene Methoden:
In Aktion zurückgestellt:
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
Und es scheint, dass die vorhandenen Rückrufe der ajax () -Methode verkettet und nicht in den Einstellungen deklariert werden können:
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Arbeitsbeispiel Aus dem Blog-Beitrag von Eric Hynds : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
Ab jQuery 1.5 gibt die Methode $ .ajax () das jXHR-Objekt zurück, das eine Obermenge des XMLHTTPRequest-Objekts ist. Weitere Informationen finden Sie im Abschnitt jXHR des Eintrags $ .ajax
VERZÖGERTE OBJEKTE
Mit dem Umschreiben des Ajax-Moduls wurde eine neue Funktion eingeführt, die ebenfalls öffentlich zugänglich gemacht wurde: Zurückgestellte Objekte . Mit dieser API können Sie mit Rückgabewerten arbeiten, die möglicherweise nicht sofort vorhanden sind (z. B. das Rückgabeergebnis einer asynchronen Ajax-Anforderung). Darüber hinaus können Sie mehrere Ereignishandler anhängen (was in der Ajax-API bisher nicht möglich war).
Darüber hinaus können Sie mit der exponierten jQuery.Deferred Ihre eigenen zurückgestellten Objekte erstellen. Weitere Informationen zu dieser API finden Sie in der Dokumentation zu verzögerten Objekten .
Eric Hynds hat ein gutes Tutorial zur Verwendung von Deferreds in jQuery 1.5 geschrieben .
Anstatt dir zu sagen, was es tut, zeige ich dir, was es tut und erkläre es.
Eine Kopie der zugehörigen Quelle von jQuery 1.5 mit Anmerkungen, die erklären, was es tut. Ich denke, die Kommentare sind größtenteils richtig.
Dies kann von Vorteil sein
quelle
Problem solved
. Übrigens ist das die 1.5beta Quelle. Ich denke, es gibt einige Änderungen in 1.6Korrigieren Sie mich, wenn ich falsch liege, aber es hat kürzlich für mich geklickt, dass es sich im Wesentlichen um einen asynchronen Task Runner handelt. Das Versprechen ist ein Ergebnisvertrag, der sicherstellt, dass Sie ... etwas erhalten, aber ohne Garantie, wann Sie es erhalten.
quelle
Während der Arbeit in Javascript stoßen wir auf Situationen, in denen Funktionsaufrufe asynchron sind. Das heißt, der Fluss der Calee-Funktion (sagen wir X) wartet nicht auf die aufgerufene asynchrone Funktion (sagen wir Y). Ein typisches Beispiel ist, wenn wir einen Server aufrufen, um Daten aus einer Datenbank oder einer HTML-Seite abzurufen. Wenn diese Anrufe nicht asynchron waren, bleibt die Benutzeroberfläche hängen und wartet darauf, dass der Server antwortet. Diese asynchrone Natur führt zu einem Problem, wenn Sie Dinge in einer Reihenfolge ausführen möchten, z. B. wenn Sie etwas drucken möchten, nachdem Y (asynchron) ausgeführt oder Daten abgerufen hat. Hier stellt uns jQuery Deffered Object zur Verfügung. Grundsätzlich hat sich jQuery um den gesamten Boilerplate-Code gekümmert, den wir normalerweise schreiben, um diese Situation zu lösen. Hier ist ein einfaches Beispiel:
Sie können Ihre eigene verzögerte (asynchrone) Funktion schreiben
Ich hoffe das hat geholfen.
quelle