Angulaire du q$.reject() vs différé.reject()
Je suis en train d'essayer d'obtenir une poignée sur l'angle de $q
service et de ses objets et de l'Api. Quand je regarde les objets de ma console je vois:
var deferred = $q.defer()
...(and then from console inspection)...
$q: Object {defer: function, reject: function, when: function, all: function}
deferred: Object {resolve: function, reject: function, notify: function, promise: Object}
deferred.promise: Object {then: function, catch: function, finally: function}
Il soulève quelques questions:
- Quelle est la différence entre
$q.reject()
etdeferred.reject()
? Lors de l'utilisation de chacun? - Quelle est la relation entre le
errorFn
dansdeferred.promise.then(successFn, errorFn)
et lacatchFn
dansdeferred.promise.catch(catchFn)
? - Si j'ai un tas d'imbrication des promesses et une erreur se produit, le ultrapériphériques
catch()
fonction toujours être appelé? Si l'un des imbriquée promesses dispose également d'une fonction capture défini? Va que les prises de prévenir le plus éloigné de la prise d'exécution?
Grâce.
Vous devez vous connecter pour publier un commentaire.
1)
$q.reject()
est un raccourci pour créer un différés et ensuite la rejeter immédiatement; j'ai souvent l'utiliser dans un errorFn si je ne peux pas gérer l'erreur.2) Rien,
promise.catch(errorFn)
est juste sucre syntaxique pourpromise.then(null, errorFn)
, tout comme les succès et les méthodes d'erreur de la$http
de service, de sorte que vous pouvez écrire le code suivant:3) C'est exactement là où q$.rejeter peuvent venir dans maniable:
$q
j'ai trouvé cet article très utile codelord.net/2015/09/24/$q-dot-reporter-vous-fait-il-fauxOk c'est mon point de vue à partir de promesses.
$q.reject(reason)
retourne le refus de la promesse avec la raison passé en argument et différée. Rejeter rejette un existant différée si son processus est terminé ou pas.errorFn
est lancé quand une promesse est rejeté et son argument est la raison pour laquelle il a été rejeté. Catch est appelée lorsqu'une erreur à l'intérieur de la promesse processus n'a pas été traité correctement causeing la promesse d'élever et d'exception et de ne pas être rejetées ou remplies .Vous shoudn pas imbriquée promesses, vous devriez avoir enchaîné les promesses auquel cas le dernier bloc catch doit tout voir avant si aucun autre bloc a été spécifié pour la gérer.