[MUSIQUE]
Lorsque nous parlions de services dans le module précédent, j'avais mentionné
sur les promesses et ensuite j'ai promis que je reviendrais aux promesses dans ce module.
Alors, nous voilà, je vais remplir ma promesse à vous.
Un calcul synchrone est partout dans le monde.
Et comment le web fonctionne.
Si vous venez du monde de la programmation séquentielle,
enrouler votre tête autour d'un calcul synchrone demande un peu d'effort.
Il y a eu de nombreuses tentatives pour rendre le calcul asynchrone aussi indolore que
possible pour les personnes qui y passent à partir du livre de calcul séquentiel.
Une telle tentative est de rendre le calcul asynchrone
plus facile à accomplir est des promesses.
Comme nous le savons, quand nous faisons une demande à n'importe quel service
ou à un serveur backend,
cela va prendre un certain temps pour que les résultats deviennent disponibles pour nous.
Si nous faisons une telle demande pendant que nous procédons à notre travail,
alors il y a une forte probabilité que notre calcul soit bloqué au point,
en attendant les résultats.
C'est un non-non en termes de bonne expérience utilisateur.
Il est donc important que chaque fois que vos résultats prendront du temps
, vous puissiez aller de l'avant sans attendre les règles.
Et c'est là que le calcul asynchrone est à votre avantage.
Dans le calcul asynchrone lorsque vous envoyez une demande
, vous attendez que les résultats reviendront plus tard, et
vous devriez être en mesure de gérer le fait, les résultats de base reviennent à un moment
beaucoup plus tard que l'endroit où vous étiez au moment où vous avez fait la demande.
Les promesses nous fournissent un moyen de traiter cela.
Regardons les promesses un peu plus en détail dans cette conférence.
Et puis nous verrons aussi l'utilisation des promesses
dans notre application Angular un peu plus tard.
Promises, le concept général est un domaine très vaste à lui seul.
Et dans ce cours, je n'ai pas le temps de passer en revue les détails des promesses.
Ça va devenir un cours entier en soi.
Je vais vous donner l'essentiel des promesses qui sont nécessaires pour que
nous comprenne comment utiliser les promesses dans notre application angulaire.
Je vous donne beaucoup de pistes vers des ressources
supplémentaires où vous pouvez aller examiner les promesses plus en détail.
Alors, en ce qui concerne cette question, qu'est-ce qu'une promesse ?
Une promesse est un mécanisme qui prend en charge le calcul asynchrone.
Je viens de donner une longue explication de pourquoi le calcul asynchrone
est essentiel pour le fonctionnement du web.
Maintenant, en utilisant une promesse, la promesse fournit un mécanisme ou
un proxy pour une valeur qui n'est pas disponible au moment où vous la demandez.
Donc une promesse vous rendra une promesse, disant que
lorsque le résultat sera disponible, il reviendra et vous donnera les résultats.
Donc, une promesse vous renvoie un objet proxy, et vous vous tenez à l'objet proxy.
Et cet objet proxy vous donnera accès aux résultats dès qu'ils seront disponibles.
Et il y a une méthode dans la façon dont vous attendez les résultats.
En fait, vous ne suspendez pas votre calcul à ce stade au lieu de cela, vous
configurez un moyen d'accepter les résultats quand il revient de cette promesse.
Pour le dire en un mot,
promesse représente une valeur qui sera disponible à un moment futur.
Il peut également être immédiatement disponible,
dans ce cas la promesse retournera la valeur immédiatement.
Mais au cas où il aurait besoin de retourner une valeur à une date ultérieure, alors cela vous donne
la promesse que cette valeur quand elle sera disponible vous sera retournée.
Il y a toujours la possibilité que la promesse ne puisse pas être respectée,
parce que les résultats ne sont pas disponibles pour quelque raison que ce soit.
Dans ce cas, une erreur vous sera remise, ou un rejet vous sera remis
, et c'est à vous de traiter le fait que la promesse a été rejetée.
Nous examinons la façon dont nous traitons cela dans la diapositive suivante.
Comme nous l'avons appris plus tôt, une promesse est un proxy pour
quelque chose qui allait se produire dans le futur ou qui pourrait ne jamais se produire dans le futur.
Donc une promesse quand elle vous sera donnée, sera dans l'état en attente.
Maintenant, lorsque la promesse est résolue, c'est-à-dire que les résultats deviennent disponibles et
la promesse est en mesure de vous livrer les résultats, alors la promesse sera résolue ou
sera honorée.
Et dans ce cas, la promesse passera de l'état en attente à la résolution ou
l'état de réalisation.
Donc, à ce moment-là, vos résultats sont à votre disposition.
Il y a une légère chance que la promesse soit rejetée à cause d'une erreur,
ou quelle que soit la raison.
Dans cette circonstance éloignée,
vous recevrez un rejet et dans ce cas, la promesse sera
considérée comme étant dans l'état rejeté lorsque le rejet sera livré.
Donc, quand vous générez une promesse, comme je l'ai dit,
une promesse est un objet proxy qui vous est livré.
Donc, lorsque vous faites une promesse à quelqu'un, la promesse en interne aura
une fonction qui traitera à la fois la résolution et
les options de rejet à l'intérieur.
Lorsque vous écrivez du code,
vous verrez que vous allez écrire du code comme nouvelle promesse (fonction (résoudre, rejeter).
Donc, qu'il soit résolu ou rejeté, nous devons être en mesure de renvoyer
l'information à qui nous avons donné la promesse.
Comment faisons-nous cela dans le code ?
Jetons un coup d'oeil à cela dans la diapositive suivante.
Voici un exemple de la façon dont la promesse est configurée dans le code.
En effet, cet exemple est dérivé de l'exercice que vous ferez
un peu plus tard.
Donc ici, lorsque nous configurons notre service, nous pouvons faire en sorte que notre service
renvoie une promesse à un composant qui demande des données du service.
Donc, lorsque la promesse est retournée,
alors la promesse de retour est disponible pour vous en tant qu'objet.
Et cette promesse fournit deux méthodes, la méthode then et la méthode catch.
Maintenant, la promesse est résolue avec succès.
Alors la promesse entraînera
à appeler une résolution.
Comme vous l'avez vu, la promesse est construite, et à l'intérieur de la promesse,
vous avez la fonction, la résolution et le rejet, comme les deux paramètres.
Donc, si la promesse est capable de livrer le résultat avec succès,
alors il appellera la méthode de résolution, puis vous retournera le résultat.
Où le résultat est-il réalité ?
Lorsque vous écrivez du code en attendant
la promesse, alors vous spécifiez ce qu'il faut faire lorsque la promesse renvoie le résultat
dans l'option then pour cette promesse.
Donc, disons par exemple, vous diriez getDishes.Puis et à l'intérieur de puis
, vous fournirez la fonction qui traitera le résultat quand il arrive.
Si la promesse n'est pas en mesure de résoudre correctement, elle rejettera
avec l'erreur qui vous sera renvoyée.
L'erreur étant un objet d'erreur qui vous sera renvoyé.
Donc, quand leur promesse est rejetée, alors vous traitez avec
le rejet en utilisant un catch dans votre code.
Donc, dans le catch, vous fournirez une fonction qui traitera l'erreur.
Par exemple, vous pouvez simplement afficher le message d'erreur,
le journal de la console et traiter l'erreur de cette façon.
Ou vous pourriez avoir une façon plus élaborée de gérer l'erreur.
Cela serait fourni dans l'option de capture que vous donnez pour ce code de promesse
de votre côté lorsque la promesse vous livre un rejet.
C'est ainsi que les deux faces de la médaille font face aux promesses.
D'un côté, vous êtes envoyé un objet promesse, et
lorsque vous recevez l'objet promesse, avec l'objet promesse, vous feriez
le temps et le catch, donc vous êtes censé implémenter à la fois les mesures de capture puis et
changées pour cet objet promesse.
Et puis, à partir de cette promesse mis à part, si la promesse se produit correctement,
alors la résolution sera appelée et ainsi, le résultat sera livré
dans la méthode alors de votre promesse.
Si la promesse est rejetée,
l'appel de rejet livrera l'erreur dans votre capture.
C'est donc ainsi que vous mettiez en œuvre le code en utilisant des promesses.
Nous traiterons de l'exemple dans l'exercice qui suit cette conférence.
Maintenant, évidemment, la question que je pose est pourquoi les promesses ?
Plus tard, quand nous traitons avec Node JS,
nous traiterons de la façon dont nous pouvons construire des rappels.
Et je vais expliquer les détails des rappels et la façon de traiter les rappels
lorsque nous couvrons le Node JS dans le dernier cours de cette spécialisation.
Les rappels ont un problème de création de ce qu'il faut appeler l'enfer de rappel.
Donc, vous avez un code de rappel très imbriqué
qui est très compliqué pour être en mesure de comprendre ce qu'il essaie de faire.
Les promesses fournissent un moyen de résoudre ce problème de rappel de l'enfer.
Mais pour le moment nous nous concentrons sur Angular, je vais simplement mentionner ce point.
Et puis nous reviendrons traiter cette question dans le dernier cours.
L'autre avantage de l'utilisation des promesses est que les promesses peuvent être changées.
Une promesse quand il livre le résultat dans le bac,
vous pouvez générer une autre promesse et retour, et
cette promesse peut être traitée en chaînant une autre méthode then à cela et ainsi de suite.
Donc, vous pouvez enchaîner un ensemble de méthodes puis ensemble pour faire face aux promesses
les unes derrière les autres.
Si le résultat est immédiatement disponible ou si vous allez rejeter immédiatement,
alors promise fournit une méthode de retour immédiat sans attendre
la promesse de résoudre ou de rejeter.
Dans ce cas, vous direz simplement promesse avec un capital p.solve et
promise.Rejeter, puis retourner immédiatement le résultat ou l'erreur.
Dans le premier exercice, nous traiterons de cette méthode de retour de la valeur
de notre service à nos composants.
Dans la deuxième partie de l'exercice, nous traiterons de
la situation où la promesse sera résolue après une durée de temps.
Et aussi dans notre composant, nous devrions être en mesure de traiter le fait que
les résultats reviennent un peu plus tard que lorsque vous demandez le résultat.
Avec cette compréhension rapide des promesses,
passons à l'exercice suivant où nous traiterons les promesses.
[MUSIQUE]