Obtient enfin appelé juste avant la promesse est remplie
Je suis en train d'exécuter une vérification une fois que la promesse est remplie en angularjs.
request.then(function(res){
$ionicLoading.hide();
deferred.resolve(res);
}, function(res){
$ionicLoading.hide();
deferred.reject(res);
})['finally'](function(res){
alert(res)
}
)
Mais l'alerte est venue comme 'undefined'.
- Qui est attendu ou je suis en train de faire quelque chose de mal? Je pensais que ça va être appelé que lorsque la promesse est résolu/rejeté.
- Quelle est la bonne façon d'atteindre cet objectif?
Grâce
pourquoi êtes-vous à l'aide de la notation de tableau? et pas .enfin() ?
à partir de la doc: "Car, enfin, est un mot réservé en JavaScript et mots réservés ne sont pas pris en charge comme les noms de propriété par l'ES3, vous devez appeler la méthode comme la promesse['enfin'](rappel) afin de rendre votre code IE8 et Android 2.x compatible".
Je crois que le
de la même manière, vous pouvez utiliser l'alias .fin() plutôt que .enfin() github.com/kriskowal/q/wiki/... , enfin() est destinée à prendre des paramètres, une fonction
Bonjour, pourriez-vous éventuellement sélectionner une réponse si l'on vous a aidé?
à partir de la doc: "Car, enfin, est un mot réservé en JavaScript et mots réservés ne sont pas pris en charge comme les noms de propriété par l'ES3, vous devez appeler la méthode comme la promesse['enfin'](rappel) afin de rendre votre code IE8 et Android 2.x compatible".
Je crois que le
finally
de rappel n'est pas destiné à prendre des paramètres, car je crois en général, finally
des clauses de garantie d'être appelée après l'exécution de certains pour vous permettre de nettoyer les ressources et autres joyeusetés.de la même manière, vous pouvez utiliser l'alias .fin() plutôt que .enfin() github.com/kriskowal/q/wiki/... , enfin() est destinée à prendre des paramètres, une fonction
Bonjour, pourriez-vous éventuellement sélectionner une réponse si l'on vous a aidé?
OriginalL'auteur Indyarocks | 2014-09-04
Vous devez vous connecter pour publier un commentaire.
Modifier/Mettre À Jour ...
Ce n'est pas la plus impressionnante de façon de faire, mais une simple et explicite. Vous avez besoin de garder une trace de ce que vous voulez enfin d'alerte que vous allez en bas de la chaîne de promesses (en supposant que vous avez plusieurs), et le stocker dans une variable.
Un plunker à démontrer:
http://plnkr.co/edit/DrqeaCAYWTQ4iWY0NPeq?p=preview
OriginalL'auteur SoluableNonagon
Vous le faites correctement, le problème est que la valeur est passée à la
finally
de rappel est la même valeur renvoyée parsuccess
ouerror
rappels. Puisque vous n'êtes pas de retourner quoi que ce soit, la valeur est undefined.Si vous ajoutez le retour des clauses à chaque rappel, il doit travailler:
Modifier
Il semble Angulaire du
finally
mise en œuvre n'est pas tout à fait prêt à passer une valeur à la fonction de rappel. Mais il est une autre façon de produire l'effet que vous voulez, il suffit de remplacer lefinally
par un autrethen
:Depuis les promesses sont exécutées de manière séquentielle, la finale
then
fonctionnera enfin. Et puisque vous n'êtes pas de retour promesses sur lesuccess
eterror
rappels, le dernierthen
aurez seulement besoin d'unsuccess
de rappel.En fin de compte, vous pourriez aussi utiliser quelque chose comme ceci:
undefined
.OriginalL'auteur bmleite
Enfin callback est appelée sans arguments.
Il ne, cependant, de retour d'une promesse de passage les résultats.
Même de fixation pour cela, vous n'êtes pas retourner quelque chose dans vos rappels, donc rien n'est transmis.
Pour illustrer ceci:
Donne ça:
Avis que la deuxième
then
a "réussi" en raison de la rejeter, de ne pas obtenir passé.Assurez-vous que vos rappels de retourner quelque chose. Et si vous voulez tomber à la errback dans la suite
then
s assurez-vous que vous revenez à un rejet.Mettre ensemble donne quelque chose comme ceci:
:
Avis que le errback dans la deuxième
then
retourné res au lieu d'un rejet, de sorte que le rappel de la finally, puis a été appelé.OriginalL'auteur marneborn