94. Introduction au JavaScript asynchrone
JavaScript est, par nature, mono-thread (single-threaded). Il exécute le code séquentiellement. Si une tâche prend beaucoup de temps (comme récupérer des données d'un serveur ou attendre un minuteur), le navigateur se fige — c'est ce qu'on appelle le blocage.
Le problème : Opérations bloquantes
Imaginez ce code synchrone :
javascript console.log('Étape 1 : Démarrage'); // Supposons que ceci prenne 5 secondes pour charger les données let data = fetchFromServer(); // BLOQUANT : Le navigateur fige ici console.log('Étape 2 : Données chargées'); console.log('Étape 3 : Terminé');
Si l'étape 2 bloque, l'utilisateur ne peut pas cliquer sur des boutons ou scroller pendant 5 secondes.
La solution : L'asynchronicité
Les opérations asynchrones s'exécutent en arrière-plan (via les Web APIs). Au lieu d'attendre le résultat immédiatement, nous disons à JS : « Lance cette longue tâche, et quand elle sera finie, exécute cette fonction spécifique. » Cela permet au thread principal (la pile d'appels) de rester libre et réactif.
Il existe trois modèles principaux pour gérer le code asynchrone :
- Callbacks (Hérité)
- Promises (Standard moderne)
- Async/Await (Le plus propre, basé sur les Promises)