TP n°2 Javascript avancé

Avant de commencer, n’oubliez pas que la documentation de Javascript est disponible ici ou là. Nous utiliserons CodeSandbox, un environnement en ligne pour coder et exécuter du Javascript.

Exercice 1 : Comprendre les exceptions

En utilisant la fonction suivante sans la modifier :

  • Regarder comment se comporte ce code lorsque l’exception est levée.
  • Faites en sorte que le log You're dead :( s’affiche si l’exception est levée en utilisant try {} catch(e) {}.
  • Faites en sorte que le log You survived :D s’affiche si l’exception n’est pas levée en utilisant le même try {} catch(e) {} que précedemment.
function russianRoulette() {
  if (Math.random() < 0.5) {
    throw new Error("PAN");
  }
}

russianRoulette()

Exercice 2 : Utiliser les promesses

Ecrire un script qui récupère 100 users via randomuser avec axios et qui les affichent.

⚠️ Attention à l’aspect asynchrone du code ! Mettez des logs un peu partout et regarder l’ordre d’affichage.

⚠️ N’oubliez pas d’ajouter la bibliothèque Axios avec le bouton Add dependency sur CodeSandbox ou via npm install --save axios en local.

Exercice 3 : Utiliser les promesses

Ecrire un script qui récupère 100 users et qui affiche les users habitants en France. (Utiliser filter())

Exercice 4 : Utiliser les promesses

Ecrire un script qui récupère 100 users et qui stocke dans un second tableau uniquement le prénom et le nom ({firstname: "Julien", lastname: "Usson"})de tous les users dont le timezone est Paris. (Utiliser filter(), map() et forEach())

Exercice 5 : Transformer un callback en promesse

La fonction setTimeout() permet d’exécuter du code après x ms de façon asynchrone. Malheureusement, à l’époque de la création de cette fonction, les promesses n’existaient pas !

Créer une fonction wrappant setTimeout() dans une promesse puis écrire un programme qui affiche le dialogue suivant :

- Toc toc
**attendre 500 millisecondes**
- Qui est là?
**attendre 10 secondes**
- C'est Internet Explorer

Autres ressources

© Julien Usson - Année 2022/2023 - ZZ2 F5