jQuery
jQuery Verschobene Objekte und Versprechen
Suche…
Einführung
Grundversprechen schaffen
Hier ist ein sehr einfaches Beispiel für eine Funktion, die " verspricht, nach Ablauf einer bestimmten Zeit fortzufahren". Dies geschieht durch Erstellen eines neuen Deferred
Objekts, das später aufgelöst wird und das Versprechen des Deferred
Objekts zurückgibt:
function waitPromise(milliseconds){
// Create a new Deferred object using the jQuery static method
var def = $.Deferred();
// Do some asynchronous work - in this case a simple timer
setTimeout(function(){
// Work completed... resolve the deferred, so it's promise will proceed
def.resolve();
}, milliseconds);
// Immediately return a "promise to proceed when the wait time ends"
return def.promise();
}
Und wie folgt verwenden:
waitPromise(2000).then(function(){
console.log("I have waited long enough");
});
Asynchrone Versprechen Verkettung
Wenn Sie mehrere asynchrone Tasks haben, die nacheinander ausgeführt werden müssen, müssen Sie ihre Versprechungsobjekte miteinander verketten. Hier ist ein einfaches Beispiel:
function First() {
console.log("Calling Function First");
return $.get("/ajax/GetFunction/First");
}
function Second() {
console.log("Calling Function Second");
return $.get("/ajax/GetFunction/Second");
}
function Third() {
console.log("Calling Function Third");
return $.get("/ajax/GetFunction/Third");
}
function log(results){
console.log("Result from previous AJAX call: " + results.data);
}
First().done(log)
.then(Second).done(log)
.then(Third).done(log);
jQuery ajax () Erfolg, Fehler VS .done (), .fail ()
Erfolg und Fehler: Ein erfolgreicher Rückruf, der nach erfolgreichem Abschluss einer Ajax-Anforderung aufgerufen wird.
Ein Fehler- Callback, der aufgerufen wird, falls während der Anforderung ein Fehler auftritt.
Beispiel:
$.ajax({
url: 'URL',
type: 'POST',
data: yourData,
datatype: 'json',
success: function (data) { successFunction(data); },
error: function (jqXHR, textStatus, errorThrown) { errorFunction(); }
});
.done () und .fail ():
.ajax (). done (Funktion (Daten, TextStatus, JqXHR) {}); Ersetzt die in jQuery 1.8 veraltete Methode .success (). Dies ist ein alternatives Konstrukt für die oben beschriebene Erfolgsrückruffunktion.
.ajax (). fail (Funktion (jqXHR, textStatus, errorThrown) {}); Ersetzt die in jQuery 1.8 veraltete Methode .error (). Dies ist ein alternatives Konstrukt für die vollständige Callback-Funktion oben.
Beispiel:
$.ajax({
url: 'URL',
type: 'POST',
data: yourData,
datatype: 'json'
})
.done(function (data) { successFunction(data); })
.fail(function (jqXHR, textStatus, errorThrown) { serrorFunction(); });
Holen Sie sich den aktuellen Stand eines Versprechens
Standardmäßig steht der Status eines Versprechens bei der Erstellung aus. Der Status eines Versprechens wird geändert, wenn das zurückgestellte Objekt, das das Versprechen erstellt hat, es entweder löst oder ablehnt.
var deferred = new $.Deferred();
var d1= deferred.promise({
prop: "value"
});
var d2= $("div").promise();
var d3= $("div").hide(1000).promise();
console.log(d1.state()); // "pending"
console.log(d2.state()); // "resolved"
console.log(d3.state()); // "pending"