Comme on le sait, Javascript est un langage à thread unique, mais pourquoi pouvons-nous utiliser un fonctionnement asynchrone ? Parce que les opérations asynchrones sont exécutées par un navigateur doté de capacités multi-thread et multi-processus. Javascript s'exécute toujours sur un seul thread et est transmis au navigateur pour exécution lorsque du code asynchrone est découvert, le navigateur appelle ensuite le thread ou le processus correspondant, y compris la requête http, l'interface graphique, le déclenchement d'événements, etc., pour gérer ces opérations asynchrones. .
De manière générale, les tâches Javasctip peuvent être divisées en trois catégories : tâche de synchronisation, micro-tâche et macro-tâche, exécutées dans l'ordre de synchronisation -> micro-> macro. Le code de synchronisation est exécuté en premier, puis le navigateur placera le microcode dans une file d'attente de micro-tâches en attendant que la tâche de synchronisation soit terminée, et placera le code de macro dans une file d'attente de tâches de macro en attendant que le micro-code se termine.
Cet ordre de priorité est similaire à l'algorithme de planification de file d'attente de commentaires à plusieurs niveaux sur le système d'exploitation.
micro-tâche courante : Promise.then(), Promise.catch(), new MutationObserver(), process.nextTick()
tâche de macro courante : setTimeout, setInterview, requestAnimationFrame()
À propos, process.nextTick() n'est ni une micro-tâche ni une macro-tâche et il s'exécute simplement après le code de synchronisation et avant la micro-tâche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!