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/