Heim >Web-Frontend >js-Tutorial >Wann sollten Erfolgsrückruffunktionen von jQuery-Ajax-Aufrufen entkoppelt werden?

Wann sollten Erfolgsrückruffunktionen von jQuery-Ajax-Aufrufen entkoppelt werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-18 19:18:29844Durchsuche

When to Decouple Success Callback Functions from jQuery Ajax Calls?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn