Microtask Queue

JavaScript 🟡 Mid

Définition

File prioritaire qui contient les callbacks de Promises (.then/.catch/.finally), MutationObserver et queueMicrotask. Vidée entièrement avant chaque macrotask.

Analogie

Les clients VIP qui passent devant tout le monde a chaque tour de service.

Exemple de code

queueMicrotask(() => console.log('micro 1'));
setTimeout(() => console.log('macro'), 0);
queueMicrotask(() => console.log('micro 2'));
// micro 1, micro 2, macro

Cas d'usage

Exécuter du code juste après l'opération courante mais avant le prochain rendu ou timer.

Anti-pattern

Créer des microtasks en boucle infinie qui bloquent complètement la macrotask queue et le rendu.
#core#interview#async

En entretien

  1. C'est quoi la microtask queue ?

    C'est une file prioritaire qui contient les callbacks des Promises (.then/.catch/.finally), de MutationObserver et de queueMicrotask. Elle est vidée entièrement avant chaque macrotask, comme des clients VIP qui passent devant tout le monde à chaque tour de service.

  2. Quel piège classique tu vois avec les microtasks ?

    Créer des microtasks en boucle infinie, ce qui bloque complètement la macrotask queue et donc le rendu de la page. C'est l'anti-pattern principal à éviter avec des .then() ou queueMicrotask enchaînés sans fin.

  3. Dans l'exemple avec deux queueMicrotask et un setTimeout(0), dans quel ordre ça s'affiche et pourquoi ?

    micro 1, micro 2, puis macro, parce que la microtask queue est vidée en entier avant que l'event loop aille chercher le prochain élément de la macrotask queue. Ça reste vrai même si le setTimeout a un délai de 0.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre