{"id":3044,"date":"2020-09-02T08:51:00","date_gmt":"2020-09-02T08:51:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"modified":"2026-04-24T11:34:04","modified_gmt":"2026-04-24T11:34:04","slug":"asynchronous-and-single-threaded-javascript-meet-the-event-loop-en-anglais","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fr\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","title":{"rendered":"Asynchrone et monot\u00e2che JavaScript ?"},"content":{"rendered":"<ul class=\"wp-block-list\">\n<li><strong>Temps d'ex\u00e9cution<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/fr\/blog\/hire-javascript-developer\/\">JavaScript<\/a> est un langage interpr\u00e9t\u00e9 et non compil\u00e9. Cela signifie qu'il a besoin d'un interpr\u00e9teur qui convertit les donn\u00e9es du <a href=\"https:\/\/thecodest.co\/fr\/blog\/hire-vue-js-developers\/\">JS<\/a> <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/what-is-code-refactoring\/\">code<\/a> \u00e0 un code machine. Il existe plusieurs types d'interpr\u00e8tes (appel\u00e9s moteurs). Les moteurs de navigateur les plus populaires sont V8 (Chrome), Quantum (Firefox) et WebKit (Safari). Par ailleurs, V8 est \u00e9galement utilis\u00e9 dans un moteur d'ex\u00e9cution populaire qui n'est pas celui d'un navigateur, <a href=\"https:\/\/thecodest.co\/fr\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a>.<\/p>\n\n\n\n<p>Chaque moteur contient un tas de m\u00e9moire, une pile d'appels, une boucle d'\u00e9v\u00e9nements, une file d'attente de rappels et une interface WebAPI avec des requ\u00eates HTTP, des minuteries, des \u00e9v\u00e9nements, etc., tous mis en \u0153uvre \u00e0 leur mani\u00e8re pour une interpr\u00e9tation plus rapide et plus s\u00fbre du code JS.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/runtime-architecture.png\" alt=\"JavaScript d\u00e9veloppement\" title=\"JavaScript d\u00e9veloppement\"\/><\/figure>\n\n\n\n<p><em>Architecture de base de l'ex\u00e9cution JS. L'auteur : Alex Zlatkov<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fil unique<\/strong><\/h2>\n\n\n\n<p>Un langage monot\u00e2che est un langage avec une seule pile d'appels et un seul tas de m\u00e9moire. Cela signifie qu'il n'ex\u00e9cute qu'une seule chose \u00e0 la fois.<\/p>\n\n\n\n<p>A&nbsp;<code>pile<\/code>&nbsp;est une r\u00e9gion continue de la m\u00e9moire, qui alloue un contexte local \u00e0 chaque fonction ex\u00e9cut\u00e9e.<\/p>\n\n\n\n<p>A&nbsp;<code>tas<\/code>&nbsp;est une r\u00e9gion beaucoup plus grande, qui stocke tout ce qui est allou\u00e9 dynamiquement.<\/p>\n\n\n\n<p>A&nbsp;<code>pile d'appels<\/code>&nbsp;est un <a href=\"https:\/\/thecodest.co\/fr\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">donn\u00e9es<\/a> qui permet de savoir o\u00f9 nous en sommes dans le programme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pile d'appels<\/strong><\/h3>\n\n\n\n<p>\u00c9crivons un code simple et suivons ce qui se passe sur la pile d'appels.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/stack.gif\" alt=\"D\u00e9veloppement du logiciel JavaScript\" title=\"D\u00e9veloppement du logiciel JavaScript\"\/><\/figure>\n\n\n\n<p>Comme vous pouvez le voir, les fonctions sont ajout\u00e9es \u00e0 la pile, ex\u00e9cut\u00e9es puis supprim\u00e9es. C'est ce qu'on appelle la m\u00e9thode LIFO (Last In, First Out). Chaque entr\u00e9e de la pile d'appels est appel\u00e9e&nbsp;<code>cadre de la pile<\/code>.<\/p>\n\n\n\n<p>La connaissance de la pile d'appels est utile pour lire les traces de la pile d'erreurs. En g\u00e9n\u00e9ral, la raison exacte de l'erreur se trouve en haut de la premi\u00e8re ligne, bien que l'ordre d'ex\u00e9cution du code soit ascendant.<\/p>\n\n\n\n<p>Parfois, vous pouvez faire face \u00e0 une erreur courante, notifi\u00e9e par\u00a0<code>D\u00e9passement de la taille maximale de la pile d'appels<\/code>. Il est facile d'obtenir cela en utilisant la r\u00e9cursivit\u00e9 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">function foo() {\n    foo()\n}\nfoo()<\/code><\/pre>\n\n\n\n<p>et notre navigateur ou notre terminal se bloque. Chaque navigateur, m\u00eame dans ses diff\u00e9rentes versions, a une limite de taille de pile d'appels diff\u00e9rente. Dans la grande majorit\u00e9 des cas, elles sont suffisantes et le probl\u00e8me doit \u00eatre recherch\u00e9 ailleurs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pile d'appels bloqu\u00e9e<\/strong><\/h3>\n\n\n\n<p>Voici un exemple de blocage du fil JS. Essayons de lire un&nbsp;<code>foo<\/code>&nbsp;et un fichier&nbsp;<code>bar<\/code>&nbsp;en utilisant le <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/what-is-node-js-used-for\/\">N\u0153ud<\/a>Fonction synchrone .js&nbsp;<code>readFileSync<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/blocking.gif\" alt=\"Code JavaScript\" title=\"Code JavaScript\"\/><\/figure>\n\n\n\n<p>Il s'agit d'un GIF en boucle. Comme vous le voyez, le moteur JS attend jusqu'au premier appel dans&nbsp;<code>readFileSync<\/code>&nbsp;est achev\u00e9e. Mais cela ne se produira pas parce qu'il n'y a pas de&nbsp;<code>foo<\/code>&nbsp;de sorte que la seconde fonction ne sera jamais appel\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Comportement asynchrone<\/strong><\/h2>\n\n\n\n<p>Cependant, JS peut \u00e9galement \u00eatre non bloquant et se comporter comme s'il \u00e9tait multithread\u00e9. Cela signifie qu'il n'attend pas la r\u00e9ponse d'un <a href=\"https:\/\/thecodest.co\/fr\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> et peut continuer l'ex\u00e9cution du code. Cela est possible gr\u00e2ce aux moteurs JS qui utilisent (sous le capot) de v\u00e9ritables langages multithreading, comme C++ (Chrome) ou Rust (Firefox). Ils fournissent <a href=\"https:\/\/thecodest.co\/fr\/blog\/why-us-companies-are-opting-for-polish-developers\/\">nous<\/a> avec le <a href=\"https:\/\/thecodest.co\/fr\/blog\/find-your-ideal-stack-for-web-development\/\">Web<\/a> API sous les capots des navigateurs ou ex. API E\/S sous Node.js.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/callback-queue.gif\" alt=\"Langue de programmation JavaScript\" title=\"Langue de programmation JavaScript\"\/><\/figure>\n\n\n\n<p>Dans le GIF ci-dessus, nous pouvons voir que la premi\u00e8re fonction est pouss\u00e9e sur la pile d'appels et que la fonction&nbsp;<code>Bonjour<\/code>&nbsp;est imm\u00e9diatement ex\u00e9cut\u00e9e dans la console.<\/p>\n\n\n\n<p>Ensuite, nous appelons le&nbsp;<code>setTimeout<\/code>&nbsp;fournie par l'interface WebAPI du navigateur. Elle passe dans la pile d'appels et son rappel asynchrone&nbsp;<code>foo<\/code>&nbsp;est plac\u00e9e dans la file d'attente de la WebApi, o\u00f9 elle attend l'appel, qui doit avoir lieu au bout de 3 secondes.<\/p>\n\n\n\n<p>Entre-temps, le programme continue le code et nous voyons&nbsp;<code>Bonjour, je ne suis pas bloqu\u00e9<\/code>&nbsp;dans la console.<\/p>\n\n\n\n<p>Apr\u00e8s avoir \u00e9t\u00e9 invoqu\u00e9e, chaque fonction de la file d'attente de l'interface WebAPI est plac\u00e9e dans la file d'attente de l'interface WebAPI.&nbsp;<code>File d'attente de rappel<\/code>. C'est l\u00e0 que les fonctions attendent que la pile d'appels soit vide. Lorsque c'est le cas, elles y sont d\u00e9plac\u00e9es une \u00e0 une.<\/p>\n\n\n\n<p>Ainsi, lorsque notre&nbsp;<code>setTimeout<\/code>&nbsp;termine le compte \u00e0 rebours, notre&nbsp;<code>foo<\/code>&nbsp;va dans la file d'attente des rappels, attend que la pile d'appels devienne disponible, s'y rend, est ex\u00e9cut\u00e9e et nous voyons&nbsp;<code>Hi from asynchronous callback<\/code>&nbsp;dans la console.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Boucle d'\u00e9v\u00e9nements<\/strong><\/h3>\n\n\n\n<p>La question est de savoir comment le syst\u00e8me d'ex\u00e9cution sait que la pile d'appels est vide et comment l'\u00e9v\u00e9nement de la file d'attente de rappel est invoqu\u00e9. Voici la boucle d'\u00e9v\u00e9nements. Elle fait partie du moteur JS. Ce processus v\u00e9rifie constamment si la pile d'appels est vide et, si c'est le cas, contr\u00f4le s'il y a un \u00e9v\u00e9nement dans la file d'attente des rappels qui attend d'\u00eatre invoqu\u00e9.<\/p>\n\n\n\n<p>C'est toute la magie des coulisses !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Synth\u00e8se de la th\u00e9orie<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Concurrence et parall\u00e9lisme<\/strong><\/h3>\n\n\n\n<p><code>Concurrence<\/code>&nbsp;signifie l'ex\u00e9cution de plusieurs t\u00e2ches en m\u00eame temps, mais pas simultan\u00e9ment. Par exemple, deux t\u00e2ches se d\u00e9roulent dans des p\u00e9riodes de temps qui se chevauchent.<\/p>\n\n\n\n<p><code>Parall\u00e9lisme<\/code>&nbsp;d\u00e9signe l'ex\u00e9cution simultan\u00e9e de deux t\u00e2ches ou plus, par exemple l'ex\u00e9cution de plusieurs calculs en m\u00eame temps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fils et processus<\/strong><\/h3>\n\n\n\n<p><code>Fils<\/code>&nbsp;sont une s\u00e9quence d'ex\u00e9cution de code qui peut \u00eatre ex\u00e9cut\u00e9e ind\u00e9pendamment l'une de l'autre.<\/p>\n\n\n\n<p><code>Processus<\/code>&nbsp;est une instance d'un programme en cours d'ex\u00e9cution. Un programme peut avoir plusieurs processus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Synchrone et asynchrone<\/strong><\/h3>\n\n\n\n<p>En&nbsp;<code>synchrone<\/code>&nbsp;les t\u00e2ches sont ex\u00e9cut\u00e9es l'une apr\u00e8s l'autre. Chaque t\u00e2che attend que la t\u00e2che pr\u00e9c\u00e9dente soit termin\u00e9e et n'est ex\u00e9cut\u00e9e qu'\u00e0 ce moment-l\u00e0.<\/p>\n\n\n\n<p>En&nbsp;<code>asynchrone<\/code>&nbsp;Lorsqu'une t\u00e2che est ex\u00e9cut\u00e9e, vous pouvez passer \u00e0 une autre t\u00e2che sans attendre que la pr\u00e9c\u00e9dente soit termin\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Synchrone et asynchrone dans un environnement simple et multithread<\/strong><\/h3>\n\n\n\n<p><code>Synchrone avec un seul thread<\/code>: Les t\u00e2ches sont ex\u00e9cut\u00e9es l'une apr\u00e8s l'autre. Chaque t\u00e2che attend que la t\u00e2che pr\u00e9c\u00e9dente soit ex\u00e9cut\u00e9e.<\/p>\n\n\n\n<p><code>Synchrone avec plusieurs fils d'ex\u00e9cution<\/code>: Les t\u00e2ches sont ex\u00e9cut\u00e9es dans diff\u00e9rents threads, mais attendent les autres t\u00e2ches en cours d'ex\u00e9cution dans un autre thread.<\/p>\n\n\n\n<p><code>Asynchrone avec un seul thread<\/code>: Les t\u00e2ches commencent \u00e0 \u00eatre ex\u00e9cut\u00e9es sans attendre la fin d'une autre t\u00e2che. \u00c0 un moment donn\u00e9, une seule t\u00e2che peut \u00eatre ex\u00e9cut\u00e9e.<\/p>\n\n\n\n<p><code>Asynchrone avec plusieurs fils d'ex\u00e9cution<\/code>: Les t\u00e2ches sont ex\u00e9cut\u00e9es dans diff\u00e9rents threads sans attendre que d'autres t\u00e2ches soient achev\u00e9es et terminent leur ex\u00e9cution de mani\u00e8re ind\u00e9pendante.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Classification JavaScript<\/strong><\/h2>\n\n\n\n<p>Si l'on consid\u00e8re la fa\u00e7on dont les moteurs JS fonctionnent sous le capot, on peut classer JS comme un langage interpr\u00e9t\u00e9 asynchrone et monot\u00e2che. Le mot \"interpr\u00e9t\u00e9\" est tr\u00e8s important car il signifie que le langage sera toujours d\u00e9pendant du temps d'ex\u00e9cution et ne sera jamais aussi rapide que les langages compil\u00e9s avec multithreading int\u00e9gr\u00e9.<\/p>\n\n\n\n<p>Il convient de noter que Node.js peut r\u00e9aliser un v\u00e9ritable multithreading, \u00e0 condition que chaque thread soit d\u00e9marr\u00e9 comme un processus distinct. Il existe des biblioth\u00e8ques pour cela, mais Node.js dispose d'une fonctionnalit\u00e9 int\u00e9gr\u00e9e appel\u00e9e&nbsp;<a href=\"https:\/\/nodejs.org\/api\/worker_threads.html#worker_threads_worker_threads\">Fils de travailleurs<\/a>.<\/p>\n\n\n\n<p>Tous les GIF de boucles d'\u00e9v\u00e9nements proviennent du site&nbsp;<a href=\"https:\/\/github.com\/latentflip\/loupe\">Loupe<\/a>&nbsp;cr\u00e9\u00e9e par Philip Roberts, o\u00f9 vous pouvez tester vos sc\u00e9narios asynchrones.<\/p>\n\n\n\n<p><b>En savoir plus :<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Pourquoi devriez-vous (probablement) utiliser Typescript ?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/\">La qualit\u00e9 avant tout ! 5 \u00e9tapes faciles pour lester votre code avec les workflows GitHub dans le projet JavaScript<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-to-improve-vue-js-apps-some-practical-tips\/\">Comment am\u00e9liorer les applications Vue.js ? Quelques conseils pratiques<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>JavaScript est un langage monot\u00e2che et, en m\u00eame temps, non bloquant, asynchrone et concurrent. Cet article vous expliquera comment cela se passe.<\/p>","protected":false},"author":2,"featured_media":3045,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3044","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Asynchronous and Single-threaded JavaScript? - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/fr\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop-en-anglais\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Asynchronous and Single-threaded JavaScript?\" \/>\n<meta property=\"og:description\" content=\"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/fr\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop-en-anglais\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-02T08:51:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:34:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Asynchronous and Single-threaded JavaScript?\",\"datePublished\":\"2020-09-02T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:34:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"},\"wordCount\":1058,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\",\"name\":\"Asynchronous and Single-threaded JavaScript? - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"datePublished\":\"2020-09-02T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:34:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Asynchronous and Single-threaded JavaScript?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/fr\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Asynchrone et monot\u00e2che JavaScript ? - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/fr\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop-en-anglais\/","og_locale":"fr_FR","og_type":"article","og_title":"Asynchronous and Single-threaded JavaScript?","og_description":"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.","og_url":"https:\/\/thecodest.co\/fr\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop-en-anglais\/","og_site_name":"The Codest","article_published_time":"2020-09-02T08:51:00+00:00","article_modified_time":"2026-04-24T11:34:04+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Asynchronous and Single-threaded JavaScript?","datePublished":"2020-09-02T08:51:00+00:00","dateModified":"2026-04-24T11:34:04+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"wordCount":1058,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","articleSection":["Software Development"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","url":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","name":"Asynchrone et monot\u00e2che JavaScript ? - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","datePublished":"2020-09-02T08:51:00+00:00","dateModified":"2026-04-24T11:34:04+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Asynchronous and Single-threaded JavaScript?"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/fr\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/comments?post=3044"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3044\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3044\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media\/3045"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media?parent=3044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/categories?post=3044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/tags?post=3044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}