Chapitre 2 · Leçon 1
Promises et async/await pour le code non-bloquant
Section 1
Step 1
JavaScript est mono-thread — il ne peut exécuter qu'une chose à la fois. Les opérations I/O (réseau, fichiers, timers) seraient bloquantes sans l'asynchrone.
snippet.javascript
1// ❌ Synchrone : bloque tout
2// (impossible en JS browser de toute façon)
3const data = readFileSync("data.json"); // BLOQUE
4console.log("Jamais atteint pendant la lecture...");
5
6// ✅ Asynchrone : non-bloquant
7fetch("/api/users")
8 .then(response => response.json())
9 .then(users => console.log(users))
10 .catch(err => console.error(err));
11
12console.log("Exécuté AVANT la réponse du fetch");Step 2
Une Promise représente une valeur future. Elle est dans l'un de ces états : pending, fulfilled ou rejected.
Section 2
Step 3
async/await est du sucre syntaxique sur les Promises. Le code a l'air synchrone tout en étant non-bloquant. Une fonction `async` retourne toujours une Promise.
Step 4
Avec async/await, on utilise try/catch pour gérer les erreurs — exactement comme le code synchrone.