Non, j'ai effacé jouez-vous aux échecs?
Tombez à nouveau parce que vous avez conclu qu'il s'agit d'un module de recyclage rapide.
Je vais plonger dans le concept de non enregistrement et c'est ainsi que l'on travaille avec un code synchrone.
Et pour cela, nous devons d'abord comprendre ce qu'est le code asynchrone.
Disons que je mets un minuteur avec set timeout, qui est une fonction intégrée au nœud J.
S là.
Nous définissons une fonction qui devrait s'exécuter après l'expiration d'un certain temporisateur.
Ici, je vais utiliser une fonction flèche.
Vous pouvez utiliser une fonction nommée, comme vous le souhaitez.
Le deuxième argument est le temporisateur.
Disons deux secondes.
Vous l'exprimez en millisecondes.
Donc, deux secondes représentent deux mille millisecondes.
Tout simplement verrouillé.
La minuterie est terminée.
Si je lance maintenant ce fichier pendant deux secondes, rien ne se passe et nous voyons que Taimur est terminé.
Maintenant, c'est du code asynchrone car il ne se termine pas immédiatement et ce serait même un code d'envoi si
nous avions une milliseconde là-bas.
Donc, si c'est super rapide, cela ne se produit pas immédiatement dans notre étape de code.
C'est comme si nous avions un verrou de console.
Bonjour.
Et le journal de la console.
Salut, ces deux extraits sont du code Synchronoss car ils sont exécutés l'un après l'autre, et pourtant techniquement,
Noad prendra un certain temps pour les exécuter.
Mais il n'y a pas de retard autre que votre matériel.
Pour ainsi dire, et fait donc un code Synchronoss.
C'est un code malade, asynchrone car il ne s'exécute pas ou ne se termine pas immédiatement.
Cela prend un peu de temps, même si c'est super court.
Et en effet, si j'exécute ce fichier comme ça, vous voyez helo et high avant de voir que Taimur est fait,
même si c'est super rapide car pas de G. S. et JavaScript en général ne bloque pas l'exécution de votre code tant que
cela n'est pas fait.
En effet, ici, il reconnaîtra cette fonction dite de rappel.
Une fonction doit donc s'exécuter.
À l'avenir, il devrait rappeler plus tard une fois l'opération terminée.
Donc, une fois que ce temporisateur a expiré ici, il reconnaîtra simplement cela et passera immédiatement
à la ligne suivante et exécutera tout le code synchrone, puis exécutera votre code asynchrone.
Une fois que cela est fait, c'est pourquoi nous voyons d'abord le niveau bas et haut, même si dans notre code le temps est
fait en premier.
Et c'est un concept crucial que vous devez comprendre en JavaScript et surtout en nœud.
Et j'y reviendrai tout au long du cours car c'est très important.
Maintenant, lorsque vous travaillez avec la dette et tout augmente à deux secondes, encore une fois, pour le rendre encore plus clair, vous
verrez à nouveau notre code de synchronisation s'exécuter.
Et puis après deux secondes, ce code s'exécute.
Lorsque nous travaillons avec du code asynchrone, nous obtenons plusieurs techniques de bien, le manipulant.
La fonction de rappel est la plus ancienne, et vous la verrez un peu, surtout la note G. S ..
Il n'y a rien de mal à cela, mais vous rencontrerez un problème si vous avez quelques opérations asynchrones dépendantes.
Nous avons donc ici réglé la minuterie.
Et maintenant, disons que je crée une autre fonction.
Que je nommerai Fetch Data.
Et là-dedans, je vais également définir un minuteur, car je ne veux pas configurer de base de données ou quelque chose comme ça où
nous récupérons des données, nous ferons tout cela pour tous les cours.
Bien sûr.
Pas de soucis.
Donc, là encore, j'ai un autre minuteur qui prend environ une seconde et demie.
Et maintenant, ici, dans Fetch Data, j'ai besoin d'un moyen de faire quelque chose.
Quand la minuterie intérieure est-elle terminée?
Donc ici, je m'attendrai à un argument que je nommerai, car cet argument sera une
fonction.
J'appellerai éventuellement ma fonction intérieure ici une fois que j'aurai fini avec le minuteur.
Et là je peux passer.
Fait comme une valeur connaissant l'endroit où une utilisation récupère les données.
Disons que c'est à l'intérieur de cet ensemble.
Temps.
Appel.
J'appelle y chercher des données comme ça.
J'ai maintenant besoin de passer et jamais de rappeler.
Et ici.
J'obtiendrai le texte passé par le rappel dans ma fonction une fois exécuté.
Nous allons donc obtenir du texte ici et je peux verrouiller la console ce texte.
Maintenant, cela peut sembler déroutant à la fin ici, je crée ma propre fonction, qui reçoit un
rappel afin que je puisse définir une fonction qui devrait s'exécuter veut que ce temporisateur interne soit fait depuis un autre endroit.
Donc, à partir de cet endroit, la fonction qui est effectivement transmise en tant que rappel.
Et j'exécute cette fonction ici.
Maintenant, si j'enregistre cela, lancez ça.
Prend deux secondes, puis ce temps de minuterie est terminé.
Et puis après une seconde et demie, je vois terminé.
Maintenant, si nous avons quelques appels asynchrones imbriqués, comme nous l'avons ici, nous allons de plus en plus profond du point de vue
du rappel.
Et c'est pourquoi nous avons toujours une fonctionnalité appelée Promises, que nous pouvons utiliser.
Aucune chance.
Maintenant, nous utilisons souvent des packages tiers qui utilisent déjà des promesses pour nous.
Donc, la syntaxe que je vais vous montrer maintenant est celle que vous devez rarement écrire vous-même.
Cela sera fait par les packages en arrière-plan.
Toujours agréable de savoir que vous créez une promesse.
À l'intérieur de notre fonction de données extraites, vous êtes, disons.
En le stockant dans une constante ou une variable, puis en utilisant le nouveau mot clé, que vous utilisez en JavaScript
pour créer un nouvel objet basé sur un constructeur.
Si les fonctions constructeur sont quelque chose qui ne vous dit rien.
Découvrez quelques ressources d'introduction de base à JavaScript, car les fonctions de constructeur sont une fonctionnalité essentielle de
JavaScript.
Et ici, il a utilisé la fonction constructeur de promesse, qui est intégrée à JavaScript et pas de G. S ..
Et prend en fait également un rappel, qui obtient des arguments, résout et rejette.
Vous pouvez les nommer comme vous le souhaitez, mais ce sont deux fonctions.
Et le premier complète la promesse avec succès.
Il le résout avec succès.
Le second le rejette, ce qui revient à lancer une erreur.
Vous prenez ensuite votre code asynchrone et le déplacez là-dedans.
Et encore une fois, vous devez rarement écrire cela par vous-même.
La plupart des packages le font déjà pour vous et vous donnent la promesse finie, qui fait toute la magie dans
les coulisses qui vous est cachée.
Ici, nous le faisons manuellement.
Alors maintenant, papa rappelle.
Nous avons notre propre ensemble de fonctions.
Le temps mort ne nous donne malheureusement pas de promesse.
Ici, nous devons tous utiliser un rappel.
Mais dans leur.
Nous savons maintenant que nous n'utilisons plus aucune fonction de rappel que nous obtenons.
Je ne reçois aucun argument ici et je récupère plus de données.
Au lieu de cela, je résous ici.
C'est fait, disons.
J'ai donc réussi à résoudre la valeur maintenant dans les données de récupération.
Après avoir défini la promesse, il suffit de la retourner.
Et veuillez noter qu'il s'agit d'un code synchrone.
Donc, en fait, cela sera retourné immédiatement après la création de la promesse avant de coder lors de l'exécution des
promesses, ce qui se produira un peu plus tard lorsque nous appellerons réellement cette fonction.
Et quand cette fois, Odyn a terminé.
Nous retournons donc cette promesse ici.
Et à l'endroit où nous appelons les données extraites, nous ne transmettons plus de rappel.
Mais nous pouvons maintenant utiliser alors, qui est appelable sur une promesse et nous retournons une promesse.
Et cela nous permet simplement de définir ici une fonction appelée ici, qui s'exécutera une fois la
promesse résolue.
Maintenant, quel est l'avantage de cela?
Si nous avions plusieurs promesses de ce genre.
Alors, disons à nouveau une extraction à froid des données et là, je n'ai pas besoin d'utiliser alors comme ça.
Et donc, je finirais par imbriqué.
Rappels à nouveau.
Mais à la place, à l'intérieur d'une promesse, puis le bloc fait partie d'une promesse.
Je peux simplement retourner une nouvelle promesse, puis ajouter la prochaine puis bloquer après la précédente.
Comme ça.
Alors maintenant, nous avons une chaîne, puis des blocs.
Celui-ci est appelé à la première promesse, puis dans le bloc alors je retourne une autre promesse.
Et même si cela ne nous donnait pas une promesse incitative.
Bloquer ensuite le retourner le convertirait en une promesse qui se résout instantanément.
Et puis nous ajoutons un autre bloc puis, qui fait maintenant référence à cette promesse ici.
Et cela est plus lisible que d'avoir des rappels infiniment imbriqués.
Alors maintenant, si je cours que nous voyons.
Bonjour.
Salut.
Le chronomètre est terminé.
Nous avons fait.
Et nous le voyons recommencer car j'appelle deux fois la récupération de données.
Il pourrait donc être difficile d'envelopper votre tête pour la première fois.
Nous allons le réutiliser.
Frappé ce cours et qu'il deviendra plus clair.
Encore une fois, ce code n'est généralement pas écrit par vous, mais c'est un concept crucial qui rend notre code asynchrone
plus gérable.
Il existe toujours une autre façon de gérer cette asynchronisation.
Attendez deux mots-clés spéciaux que vous pouvez utiliser en JavaScript moderne, et j'aurai une section séparée à ce sujet vers
la fin du cours.
Je veux l'introduire ici car cela peut être plus déroutant que cette syntaxe ici.
Et je veux m'en tenir à celui-ci.
N'introduisez pas trop de nouvelles fonctionnalités en même temps ici.
Le code asynchrone est cependant quelque chose que vous devez comprendre.
Et si ce n'est pas totalement clair maintenant, c'est très bien, bien que vous le verrez pour un cours
modifié, car nous avons beaucoup d'événements asynchrones en aucune chance.
Et je vais l'expliquer plusieurs fois.
Je vais également expliquer à nouveau les promesses.
Je veux simplement m'assurer que vous l'avez déjà vu et que vous avez ensuite une chance de comprendre cela, comment
cela fonctionne et comment nous y faisons face.