Heim >Web-Frontend >js-Tutorial >Wann sollten Erfolgsrückruffunktionen von jQuery-Ajax-Aufrufen entkoppelt werden?
Erfolgsrückruffunktionen von jQuery-Ajax-Aufrufen entkoppeln
Beim Abrufen von Daten von einem Server mit jQuery-Ajax ist es üblich, den Erfolg zu definieren Callback-Funktion innerhalb des .ajax()-Blocks. Dadurch wird die Rückrufverarbeitung eng mit dem AJAX-Aufruf verknüpft, was die Flexibilität und Wiederverwendbarkeit einschränkt.
Um den Erfolgsrückruf außerhalb des .ajax()-Blocks zu definieren, wird normalerweise eine Variable zum Speichern der zurückgegebenen Daten deklariert. Es wird jedoch ein modernerer Ansatz mit verzögerten Objekten empfohlen.
Seit jQuery 1.5 bieten verzögerte Objekte eine bessere Möglichkeit, asynchrone Vorgänge wie AJAX-Aufrufe zu verarbeiten. So können Sie dies erreichen:
function getData() { return $.ajax({ url : 'example.com', type: 'GET' }); } function handleData(data /* , textStatus, jqXHR */ ) { alert(data); //do some stuff } getData().done(handleData);
Dieser Ansatz entkoppelt die Rückrufverarbeitung vom AJAX-Aufruf und ermöglicht so problemlos mehrere Rückrufe, Fehlerbehandlung und Synchronisierung asynchroner Ereignisse.
Für Beispiel:
// Timer for demo purposes, resolves itself after 5 seconds var timer = $.Deferred(); setTimeout(timer.resolve, 5000); // Get data using AJAX and attach done and error handlers var ajax = getData().done(handleData).fail(error); // Wait for both AJAX and timer to finish before continuing $.when(timer, ajax).done(function() { // Both AJAX and 5s timer have finished }); // Additional callbacks can be added even after AJAX call finishes ajax.done(function(data) { //Do some stuff with data });
Dies demonstriert die Leistungsfähigkeit verzögerter Objekte und ermöglicht eine größere Kontrolle und Flexibilität über asynchrone Vorgänge in jQuery-Anwendungen.
Das obige ist der detaillierte Inhalt vonWann sollten Erfolgsrückruffunktionen von jQuery-Ajax-Aufrufen entkoppelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!