Heim >Web-Frontend >js-Tutorial >Wie kann ich mit Rückgabewerten asynchroner AJAX-Aufrufe umgehen?
Bei der asynchronen Programmierung, beispielsweise bei AJAX-Aufrufen, ist die von der Funktion zurückgegebene Variable nicht sofort verfügbar, so wie der Aufruf selbst nicht sofort ausgeführt. Bei AJAX-Aufrufen erfolgt der Aufruf asynchron, d. h. er wird im Hintergrund ausgeführt, während der Rest des Codes weiter ausgeführt wird.
Das Problem, mit dem Sie konfrontiert sind, besteht darin, dass die Funktion get_data im bereitgestellten Code es versucht um das Ergebnis des AJAX-Aufrufs direkt zurückzugeben. Da der Aufruf jedoch asynchron ist, kann die Funktion nicht auf das Ergebnis warten, bevor sie zurückkehrt.
Um dieses Problem zu lösen, sollte die Funktion get_data so geändert werden, dass sie einen Rückruf verwendet Funktion. Eine Callback-Funktion ist eine Funktion, die als Argument an eine andere Funktion übergeben und später ausgeführt wird, nachdem die erste Funktion abgeschlossen wurde.
Im überarbeiteten Code:
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } }
So rufen Sie die get_data-Funktion mit einem Rückruf auf:
get_data(data, destination, function(test) { notice(test); });
In diesem Beispiel eine anonyme Rückruffunktion wird verwendet, um das Ergebnis des AJAX-Aufrufs zu verarbeiten. Das Ergebnis des Aufrufs wird an die Hinweisfunktion übergeben.
Durch die Verwendung eines Rückrufs kann die Funktion get_data den AJAX-Aufruf initiieren und sofort zurückkehren, während die Rückruffunktion später ausgeführt wird, wenn das Ergebnis verfügbar ist.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Rückgabewerten asynchroner AJAX-Aufrufe umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!