Logs synchrones, logs asynchrones : ce que la console ne montre pas

Un ordre qui semble logique

Quand on lit des logs dans la console, l’ordre d’affichage donne souvent l’impression de refléter l’ordre réel d’exécution. En réalité, ce n’est pas toujours le cas.

Dès que de l’asynchrone entre en jeu, la console peut donner une vision partielle, voire trompeuse, de ce qui se passe.

Synchrone et asynchrone mélangés

Un console.log exécuté dans une promesse, un timeout ou un handler d’événement n’a pas le même rapport au temps qu’un log synchrone.

Mis bout à bout, ces logs peuvent sembler incohérents si on ne tient pas compte du contexte d’exécution.

Ce que la console ne dit pas

  • quand une tâche est planifiée
  • quand elle est réellement exécutée
  • ce qui a été mis en attente

Sans ces informations, certains bugs liés au timing restent difficiles à lire.

Lire les logs avec le facteur temps

Comme évoqué dans l’article sur le debug sans breakpoints, suivre le flux réel est souvent plus important que lire une valeur isolée.

Prendre en compte le temps permet de redonner du sens à des logs qui semblaient contradictoires 🙂