Angularjs simple .th ou service $ q en demande asynchrone

Je ne sais pas quelle est la différence exacte entre le service AngularJS $q et simplement l'utilisation de .then() après une demande asynchrone.

Exemple simple avec .then() :

 function InboxService($http) { this.getEmails = function getEmails() { return $http.get('/emails'); }; } 

Et lors de l'utilisation du service (juste une partie du code):

 InboxService.getEmails() .then(function (response) { // use response }); 

Quelle est la différence avec le service $q avec la résolution et le rejet ?

Quelle est la différence avec le service $ q avec la résolution et le rejet?

Je suppose que vous posez des questions sur l'utilisation de var deferred = $q.defer() avec deferred.resolve() var deferred = $q.defer() deferred.resolve() ou deferred.reject() ? Dans ce cas, la réponse est que vous n'en avez pas besoin car vous avez déjà un objet de promesse retourné par le service $http . En fait, la construction manuelle d'une autre nouvelle promesse avec $q n'est pas recommandée et considérée comme anti-modèle .

Dans les cas où vous travaillez avec des fonctions asynchrones (timeouts, ajax-requests) qui ne sont pas encore promulguées, il s'agit d'un cas où vous voudrez utiliser $q pour créer et rendre prometteur. Mais une fois de plus, dans votre cas, vous ne l'avez pas besoin car les promesses de service $http promettent pour vous et une autre est tout simplement redondante.

Le $ q est superflu et, dans la plupart des cas, n'est pas nécessaire. http://www.codelord.net/2015/09/24/$q-dot-defer-youre-doing-it-wrong/