TP n°2 Javascript avancé

Avant de commencer, n’oubliez pas que la documentation de Javascript est disponible ici ou . 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