Aller au contenu principal

Le site sera en maintenance le 01/03/2026

Aller au contenu principal

Python est (par défaut) synchrone et multi-threadé (si on veut). JS est Single Threaded (un seul fil d'exécution).

Si tu fais une boucle infinie en JS, TOUT fige (la page web ne répond plus, on ne peut plus cliquer). C'est pour ça que tout ce qui est long (réseau, timer, lecture fichier) est Asynchrone.

Le concept

  1. JS exécute ton code ligne par ligne.
  2. Il rencontre setTimeout (ou une requête réseau). Il dit "Ok, navigateur/système, gère ça et préviens-moi quand c'est fini".
  3. Il continue DIRECTEMENT à la ligne suivante (il n'attend pas).
  4. Quand l'opération est finie, le système met le callback dans une file d'attente (Task Queue).
  5. Dès que JS a fini tout son travail actuel, il regarde la file : "Ah, le timer est fini, j'exécute le callback".

C'est pour ça que setTimeout(..., 0) ne s'exécute pas immédiatement, mais dès que possible après la fin du script actuel.