Asynchrone Kommunikation über HTTP ist in vielen Anwendungen üblich. In diesem Artikel wird erläutert, wie $http-Antworten innerhalb von AngularJS-Diensten effektiv verarbeitet und gehandhabt werden.
Poster @Gloopy ist auf ein Problem gestoßen, bei dem die Datenbindung nicht funktionierte, wenn $http anstelle von $timeout verwendet wurde asynchrones Verhalten zu simulieren. Ihre Ansicht wurde mit der empfangenen JSON-Antwort nicht aktualisiert.
Die Lösung besteht darin, Versprechen und ihre „Dann“-Funktionen zu verwenden, um die asynchrone Natur von $http-Anfragen zu verarbeiten. Hier ist eine Aufschlüsselung:
1. Factory-Service-Implementierung
angular.factory('myService', function($http) { return { async: function() { // Promise-based $http request var promise = $http.get('test.json').then(function (response) { return response.data; }); return promise; } }; });
Hier gibt myService ein Versprechen von seiner asynchronen Methode zurück, die die HTTP-Anfrage kapselt. Dieses Versprechen bietet die Möglichkeit, Rückrufe hinzuzufügen (über die Funktion „Dann“), um die Antwort zu verarbeiten, sobald sie verfügbar ist.
2. Controller-Implementierung
angular.controller('MainCtrl', function(myService, $scope) { // Callback function attached to the promise's "then" function myService.async().then(function(data) { $scope.data = data; }); });
Im Controller wird die asynchrone Methode des Dienstes aufgerufen und mithilfe der „then“-Funktion ein Rückruf an das zurückgegebene Versprechen angehängt. Dieser Rückruf wird ausgeführt, wenn die HTTP-Anfrage abgeschlossen ist, und aktualisiert die Eigenschaft $scope.data mit den empfangenen Daten.
Durch die Verwendung von Versprechen wird es möglich, die asynchrone Aufgabe (die HTTP-Anfrage) vom Code zu trennen das sein Ergebnis verarbeitet (den „then“-Rückruf). Dieser Ansatz stellt sicher, dass die Benutzeroberfläche korrekt aktualisiert wird, wenn die Daten verfügbar sind, sodass die Ansicht ordnungsgemäß aktualisiert werden kann.
Das obige ist der detaillierte Inhalt vonWie können Versprechen Probleme bei der Verarbeitung von HTTP-Antworten in AngularJS-Diensten lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!