Maison > interface Web > js tutoriel > Comment gérer correctement les réponses $http asynchrones dans les services AngularJS ?

Comment gérer correctement les réponses $http asynchrones dans les services AngularJS ?

Mary-Kate Olsen
Libérer: 2024-12-07 17:59:12
original
825 Les gens l'ont consulté

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

Traitement de la réponse $http dans le service

Dans votre récent problème, vous avez rencontré un problème où votre vue n'était pas mise à jour après avoir traité avec succès un $ requête http dans votre service.

Solution :

Pour résoudre ce problème, vous devez travailler directement avec les promesses et leurs fonctions « puis » pour gérer les réponses renvoyées asynchrones. Voici un exemple :

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;
  });
});
Copier après la connexion

Dans cet exemple, la méthode asynchrone du service renvoie une promesse. Le contrôleur appelle cette méthode et gère la valeur résolue de la promesse à l'aide de la fonction « then ». Cela vous permet d'accéder et de manipuler les données de réponse et de mettre à jour la vue depuis le contrôleur.

Vous pouvez également mettre en cache la requête $http en utilisant la même technique :

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;
});
Copier après la connexion

Cette approche garantit que la requête $http n'est effectuée qu'une seule fois, améliorant ainsi les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal