Entkopplung erfolgreicher Rückruffunktionen von jQuery-Ajax-Aufrufen
Beim Abrufen von Daten von einem Server mithilfe von 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.
Zum 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3