Heim >Web-Frontend >js-Tutorial >Wie werden asynchrone $http-Antworten in AngularJS-Diensten ordnungsgemäß verarbeitet?

Wie werden asynchrone $http-Antworten in AngularJS-Diensten ordnungsgemäß verarbeitet?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 17:59:12824Durchsuche

How to Properly Handle Asynchronous $http Responses in AngularJS Services?

Verarbeitung einer $http-Antwort im Service

In Ihrer letzten Ausgabe sind Sie auf ein Problem gestoßen, bei dem Ihre Ansicht nach erfolgreicher Verarbeitung eines $ nicht aktualisiert wurde http-Anfrage in Ihrem Dienst.

Lösung:

Um dieses Problem zu beheben, Sie müssen direkt mit Versprechen und ihren „Dann“-Funktionen arbeiten, um asynchron zurückgegebene Antworten zu verarbeiten. Hier ist ein Beispiel:

app.factory('myService', function ($http) {
  var myService = {
    async: function () {
      // $http returns a promise
      var promise = $http.get('test.json').then(function (response) {
        // Process the response and return modified data
        return response.data;
      });
      // Return the promise
      return promise;
    }
  };
  return myService;
});

app.controller('MainCtrl', function (myService, $scope) {
  // Call the async method and then do stuff with what is returned in the "then" function
  myService.async().then(function (data) {
    $scope.data = data;
  });
});

In diesem Beispiel gibt die asynchrone Methode im Dienst ein Versprechen zurück. Der Controller ruft diese Methode auf und verarbeitet den aufgelösten Wert des Versprechens mithilfe der Funktion „then“. Dadurch können Sie auf die Antwortdaten zugreifen und diese bearbeiten und die Ansicht über den Controller aktualisieren.

Sie können die $http-Anfrage auch mit derselben Technik zwischenspeichern:

app.factory('myService', function ($http) {
  var promise;
  var myService = {
    async: function () {
      // If the promise doesn't exist, create it
      if (!promise) {
        promise = $http.get('test.json').then(function (response) {
          // Process the response and return modified data
          return response.data;
        });
      }
      // Return the cached promise
      return promise;
    }
  };
  return myService;
});

Dieser Ansatz stellt dies sicher Die $http-Anfrage wird nur einmal gestellt, was die Leistung verbessert.

Das obige ist der detaillierte Inhalt vonWie werden asynchrone $http-Antworten in AngularJS-Diensten ordnungsgemäß verarbeitet?. 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