Fonctions, Threads et Exécution Asynchrone en JavaScript
Vous devez comprendre comment JavaScript fonctionne en coulisses.
Voici une analyse des fonctions, des processus, des threads et des modes d'exécution.
Types de fonctions JavaScript
- Fonction nommée : Utilise un nom spécifique. Cela facilite le débogage.
- Fonction anonyme : N'a pas de nom. On les utilise souvent comme callbacks.
- Expression de fonction : Vous assignez une fonction à une variable.
- Fonction fléchée : Une syntaxe plus courte utilisant le symbole =>.
- IIFE : Une expression de fonction invoquée immédiatement (Immediately Invoked Function Expression). Elle s'exécute dès sa définition.
Processus vs Thread
Un processus est un programme en cours d'exécution sur votre ordinateur.
- Chaque processus possède sa propre mémoire.
- Si un processus plante, les autres continuent de fonctionner.
- Exemple : Chrome et Spotify sont des processus distincts.
Un thread est une petite unité à l'intérieur d'un processus.
- Les threads partagent la même mémoire.
- Ils permettent à un seul programme d'effectuer plusieurs tâches simultanément.
- Exemple : Dans Chrome, un thread affiche une page pendant qu'un autre gère vos clics de souris.
Synchrone vs Asynchrone
JavaScript est monothread (single-threaded). Il gère une tâche à la fois en utilisant une pile d'appels (call stack).
Exécution synchrone :
- Les tâches s'exécutent les unes après les autres.
- Chaque tâche attend que la précédente soit terminée.
- Les tâches lentes bloquent l'exécution de votre code.
Exécution asynchrone :
- Les tâches s'exécutent en arrière-plan.
- Le code ne s'arrête pas en attendant qu'une tâche se termine.
- Cela utilise des Web APIs, une file d'attente de rappel (Callback Queue) et une boucle d'événements (Event Loop).
Fonctionnement de l'asynchrone :
- JavaScript envoie une tâche (comme un minuteur) à une Web API.
- Le code principal continue de s'exécuter.
- Une fois la tâche terminée, elle est placée dans la Callback Queue.
- L'Event Loop la déplace vers la Call Stack lorsque celle-ci est vide.
Cela permet à vos applications web de rester rapides et réactives.