{"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":"asunkroonne-ja-uhe-niidiga-javascript-kohtuvad-sundmuse-tsukliga","status":"publish","type":"post","link":"https:\/\/thecodest.co\/et\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","title":{"rendered":"As\u00fcnkroonne ja \u00fchet\u00e4heline JavaScript?"},"content":{"rendered":"<ul class=\"wp-block-list\">\n<li><strong>K\u00e4itusaeg<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/et\/blog\/hire-javascript-developer\/\">JavaScript<\/a> on t\u00f5lgitud keel, mitte kompileeritud keel. See t\u00e4hendab, et see vajab interpretaatorit, mis teisendab <a href=\"https:\/\/thecodest.co\/et\/blog\/hire-vue-js-developers\/\">JS<\/a> <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-code-refactoring\/\">kood<\/a> masinkoodiks. On olemas mitut t\u00fc\u00fcpi interpreteerijaid (tuntud kui mootorid). K\u00f5ige populaarsemad brauserite mootorid on V8 (Chrome), Quantum (Firefox) ja WebKit (Safari). Muide, V8 on kasutusel ka populaarses mitte-brauseri jooksutusprogrammis, <a href=\"https:\/\/thecodest.co\/et\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a>.<\/p>\n\n\n\n<p>Iga mootor sisaldab m\u00e4luhunnikut, kutsete virna, s\u00fcndmuste ahelat, tagasikutsumise j\u00e4rjekorda ja WebAPI-d koos HTTP p\u00e4ringute, taimerite, s\u00fcndmuste jne, mis on k\u00f5ik omal viisil rakendatud JS-koodi kiiremaks ja turvalisemaks t\u00f5lgendamiseks.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/runtime-architecture.png\" alt=\"JavaScript arendus\" title=\"JavaScript arendus\"\/><\/figure>\n\n\n\n<p><em>P\u00f5hiline JS-ajastusarhitektuur. Autor: Alex Zlatkov<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00dcksik niit<\/strong><\/h2>\n\n\n\n<p>\u00dche niidi keel on keel, millel on ainult \u00fcks kutsete virn ja ainult \u00fcks m\u00e4luhunnik. See t\u00e4hendab, et korraga t\u00f6\u00f6tab ainult \u00fcks asi.<\/p>\n\n\n\n<p>A&nbsp;<code>virna<\/code>&nbsp;on pidev m\u00e4lupiirkond, mis eraldab lokaalse konteksti igale t\u00e4idetavale funktsioonile.<\/p>\n\n\n\n<p>A&nbsp;<code>hunnik<\/code>&nbsp;on palju suurem piirkond, kus hoitakse k\u00f5ike d\u00fcnaamiliselt eraldatud teavet.<\/p>\n\n\n\n<p>A&nbsp;<code>k\u00f5nede virna<\/code>&nbsp;on <a href=\"https:\/\/thecodest.co\/et\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">andmed<\/a> struktuur, mis p\u00f5him\u00f5tteliselt salvestab, kus me programmis oleme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>K\u00f5ne Stack<\/strong><\/h3>\n\n\n\n<p>Kirjutame lihtsa koodi ja j\u00e4lgime, mis toimub kutsete virnas.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/stack.gif\" alt=\"JavaScript tarkvaraarendus\" title=\"JavaScript tarkvaraarendus\"\/><\/figure>\n\n\n\n<p>Nagu n\u00e4ete, lisatakse funktsioonid virna, t\u00e4idetakse ja hiljem kustutatakse. See on nn LIFO-viis - Last In, First Out. Iga kirjet call stackis nimetatakse&nbsp;<code>virnaraam<\/code>.<\/p>\n\n\n\n<p>Teadmised k\u00f5nede virna kohta on kasulikud vigade virna j\u00e4lgede lugemiseks. \u00dcldiselt on t\u00e4pne vea p\u00f5hjus esimesel real \u00fcleval, kuigi koodi t\u00e4itmise j\u00e4rjekord on alt \u00fclespoole.<\/p>\n\n\n\n<p>M\u00f5nikord saab tegeleda populaarse veaga, millest teavitab\u00a0<code>Maksimaalne kutsete virna suurus on \u00fcletatud<\/code>. Seda on lihtne saavutada rekursiooni abil:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">funktsioon foo() {\n    foo()\n}\nfoo()<\/code><\/pre>\n\n\n\n<p>ja meie brauser v\u00f5i terminal k\u00fclmutab. Igal brauseril, isegi nende erinevatel versioonidel, on erinev call stacki suuruse piirang. Enamikul juhtudel on need piisavad ja probleemi tuleb otsida mujalt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Blokeeritud k\u00f5nede virna<\/strong><\/h3>\n\n\n\n<p>Siin on n\u00e4ide JS-niidi blokeerimisest. Proovime lugeda&nbsp;<code>foo<\/code>&nbsp;faili ja&nbsp;<code>baar<\/code>&nbsp;kasutades <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-node-js-used-for\/\">S\u00f5lme<\/a>.js s\u00fcnkroonne funktsioon&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=\"JavaScript kood\" title=\"JavaScript kood\"\/><\/figure>\n\n\n\n<p>See on loopitud GIF. Nagu n\u00e4ete, ootab JS-mootor kuni esimese kutsumiseni aadressil&nbsp;<code>readFileSync<\/code>&nbsp;on l\u00f5petatud. Kuid seda ei juhtu, sest ei ole olemas&nbsp;<code>foo<\/code>&nbsp;faili, nii et teist funktsiooni ei kutsuta kunagi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>As\u00fcnkroonne k\u00e4itumine<\/strong><\/h2>\n\n\n\n<p>Kuid JS v\u00f5ib olla ka mitteblokeeriv ja k\u00e4ituda nii, nagu oleks see mitmikeeruline. See t\u00e4hendab, et ta ei oota vastust <a href=\"https:\/\/thecodest.co\/et\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> k\u00f5ne, I\/O-s\u00fcndmused jne ja saab j\u00e4tkata koodi t\u00e4itmist. See on v\u00f5imalik t\u00e4nu JS-mootoritele, mis kasutavad (kapoti all) t\u00f5elisi mitmeh\u00e4\u00e4lseid keeli, nagu C++ (Chrome) v\u00f5i Rust (Firefox). Need pakuvad <a href=\"https:\/\/thecodest.co\/et\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> koos <a href=\"https:\/\/thecodest.co\/et\/blog\/find-your-ideal-stack-for-web-development\/\">Veeb<\/a> API brauseri kapuutsi all v\u00f5i ex. I\/O API Node.js all.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/callback-queue.gif\" alt=\"JavaScript programmeerimiskeel\" title=\"JavaScript programmeerimiskeel\"\/><\/figure>\n\n\n\n<p>\u00dclaltoodud GIF-is n\u00e4eme, et esimene funktsioon l\u00fckatakse call stacki ja&nbsp;<code>Tere<\/code>&nbsp;t\u00e4idetakse kohe konsoolis.<\/p>\n\n\n\n<p>Seej\u00e4rel kutsume me&nbsp;<code>setTimeout<\/code>&nbsp;funktsioon, mida pakub brauseri WebAPI. See l\u00e4heb kutsete virna ja selle as\u00fcnkroonne tagasikutsumine&nbsp;<code>foo<\/code>&nbsp;funktsioon l\u00e4heb WebApi j\u00e4rjekorda, kus see ootab k\u00f5ne, mis on m\u00e4\u00e4ratud toimuma 3 sekundi p\u00e4rast.<\/p>\n\n\n\n<p>Vahepeal j\u00e4tkab programm koodi ja me n\u00e4eme, et&nbsp;<code>Tere. Ma ei ole blokeeritud<\/code>&nbsp;konsoolis.<\/p>\n\n\n\n<p>P\u00e4rast selle k\u00e4ivitamist l\u00e4heb iga funktsioon WebAPI j\u00e4rjekorras olevasse funktsiooni&nbsp;<code>Tagasikutsumise j\u00e4rjekord<\/code>. See on koht, kus funktsioonid ootavad, kuni kutsete virn on t\u00fchi. Kui see juhtub, viiakse nad sinna \u00fckshaaval.<\/p>\n\n\n\n<p>Nii et kui meie&nbsp;<code>setTimeout<\/code>&nbsp;taimer l\u00f5petab tagasiarvestuse, meie&nbsp;<code>foo<\/code>&nbsp;funktsioon l\u00e4heb tagasil\u00f6\u00f6gij\u00e4rjekorda, ootab, kuni kutsete virna vabaneb, l\u00e4heb sinna, t\u00e4idetakse ja me n\u00e4eme, et&nbsp;<code>Tere as\u00fcnkroonsest tagasikutsumisest<\/code>&nbsp;konsoolis.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>S\u00fcndmuse ts\u00fckkel<\/strong><\/h3>\n\n\n\n<p>K\u00fcsimus on selles, kuidas saab runtime teada, et kutsete virn on t\u00fchi ja kuidas kutsutakse tagasi kutsete j\u00e4rjekorras olev s\u00fcndmus esile? Tutvuge s\u00fcndmuse ahelaga. See on osa JS-mootorist. See protsess kontrollib pidevalt, kas call stack on t\u00fchi ja kui on, siis j\u00e4lgib, kas callbacki j\u00e4rjekorras on s\u00fcndmus, mis ootab kutsumist.<\/p>\n\n\n\n<p>See on kogu v\u00f5lu kulisside taga!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Teooria kokkuv\u00f5tteks<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Samaaegsus ja paralleelsus<\/strong><\/h3>\n\n\n\n<p><code>Samaaegsus<\/code>&nbsp;t\u00e4hendab mitme \u00fclesande samaaegset, kuid mitte samaaegset t\u00e4itmist. N\u00e4iteks kaks \u00fclesannet t\u00f6\u00f6tab kattuvas ajaperioodis.<\/p>\n\n\n\n<p><code>Paralleelsus<\/code>&nbsp;t\u00e4hendab kahe v\u00f5i enama \u00fclesande samaaegset t\u00e4itmist, nt mitme arvutuse samaaegset sooritamist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Niidid ja protsessid<\/strong><\/h3>\n\n\n\n<p><code>Niidid<\/code>&nbsp;on koodide t\u00e4itmise jada, mida saab t\u00e4ita \u00fcksteisest s\u00f5ltumatult.<\/p>\n\n\n\n<p><code>Protsess<\/code>&nbsp;on k\u00e4imasoleva programmi instants. Programmil v\u00f5ib olla mitu protsessi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>S\u00fcnkroonne ja as\u00fcnkroonne<\/strong><\/h3>\n\n\n\n<p>Veebilehel&nbsp;<code>s\u00fcnkroonne<\/code>&nbsp;programmeerimisel t\u00e4idetakse \u00fclesandeid \u00fcksteise j\u00e4rel. Iga \u00fclesanne ootab, kuni eelmine \u00fclesanne on l\u00f5petatud, ja seda t\u00e4idetakse alles siis.<\/p>\n\n\n\n<p>Veebilehel&nbsp;<code>as\u00fcnkroonne<\/code>&nbsp;programmeerimine, kui \u00fcks \u00fclesanne on t\u00e4idetud, saate vahetada teise \u00fclesande vastu, ootamata eelmise \u00fclesande t\u00e4itmist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>S\u00fcnkroonne ja as\u00fcnkroonne \u00fche- ja mitmeahelaline keskkond<\/strong><\/h3>\n\n\n\n<p><code>S\u00fcnkroonne \u00fche niidiga<\/code>: \u00dclesanded t\u00e4idetakse \u00fcksteise j\u00e4rel. Iga \u00fclesanne ootab, kuni eelmine \u00fclesanne on t\u00e4idetud.<\/p>\n\n\n\n<p><code>S\u00fcnkroonne mitme niidiga<\/code>: \u00dclesandeid t\u00e4idetakse erinevates niitides, kuid oodatakse mis tahes muid \u00fclesandeid, mis on t\u00e4itmisel m\u00f5nes teises niidis.<\/p>\n\n\n\n<p><code>As\u00fcnkroonne \u00fche niidiga<\/code>: \u00dclesandeid hakatakse t\u00e4itma ilma teise \u00fclesande l\u00f5petamist ootamata. \u00dchel ajahetkel saab t\u00e4ita ainult \u00fchte \u00fclesannet.<\/p>\n\n\n\n<p><code>As\u00fcnkroonne mitme niidiga<\/code>: \u00dclesandeid t\u00e4idetakse erinevates niitides, ootamata teiste \u00fclesannete l\u00f5petamist ja l\u00f5petades nende t\u00e4itmise iseseisvalt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>JavaScript klassifikatsioon<\/strong><\/h2>\n\n\n\n<p>Kui me vaatame, kuidas JS-mootorid kapoti all t\u00f6\u00f6tavad, siis v\u00f5ime JS-i liigitada as\u00fcnkroonseks ja \u00fche niidiga interpreteeritavaks keeleks. S\u00f5na \"interpreteeritud\" on v\u00e4ga oluline, sest see t\u00e4hendab, et keel on alati t\u00f6\u00f6ajast s\u00f5ltuv ja mitte kunagi nii kiire kui kompileeritud keeled, millel on sisseehitatud mitmeh\u00e4\u00e4lsus.<\/p>\n\n\n\n<p>On m\u00e4rkimisv\u00e4\u00e4rne, et Node.js suudab saavutada t\u00f5elise mitmikeeramise, tingimusel, et iga niit k\u00e4ivitatakse eraldi protsessina. Selleks on olemas raamatukogud, kuid Node.js-l on sisseehitatud funktsioon nimega&nbsp;<a href=\"https:\/\/nodejs.org\/api\/worker_threads.html#worker_threads_worker_threads\">T\u00f6\u00f6tajate niidid<\/a>.<\/p>\n\n\n\n<p>K\u00f5ik s\u00fcndmuse loop GIFid p\u00e4rinevad&nbsp;<a href=\"https:\/\/github.com\/latentflip\/loupe\">Luup<\/a>&nbsp;Philip Robertsi loodud rakendus, kus saate testida oma as\u00fcnkroonseid stsenaariume.<\/p>\n\n\n\n<p><b>Loe edasi:<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Miks peaksite (t\u00f5en\u00e4oliselt) kasutama Typescripti?<\/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\/\">Kvaliteet k\u00f5igepealt! 5 lihtsat sammu oma koodi lintimiseks GitHubi t\u00f6\u00f6voogude abil JavaScript projektis<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-to-improve-vue-js-apps-some-practical-tips\/\">Kuidas parandada Vue.js rakendusi? M\u00f5ned praktilised n\u00e4pun\u00e4ited<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>JavaScript on \u00fchet\u00e4heline keel ja samal ajal ka mitteblokeeriv, as\u00fcnkroonne ja samaaegne. Selles artiklis selgitatakse teile, kuidas see toimub.<\/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\/et\/blogi\/asunkroonne-ja-uhe-niidiga-javascript-kohtuvad-sundmuse-tsukliga\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/blogi\/asunkroonne-ja-uhe-niidiga-javascript-kohtuvad-sundmuse-tsukliga\/\" \/>\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 minutit\" \/>\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\":\"et\",\"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\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\",\"@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\\\/et\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"As\u00fcnkroonne ja \u00fchet\u00e4heline 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\/et\/blogi\/asunkroonne-ja-uhe-niidiga-javascript-kohtuvad-sundmuse-tsukliga\/","og_locale":"et_EE","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\/et\/blogi\/asunkroonne-ja-uhe-niidiga-javascript-kohtuvad-sundmuse-tsukliga\/","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 minutit"},"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":"et","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":"As\u00fcnkroonne ja \u00fchet\u00e4heline 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":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"]}]},{"@type":"ImageObject","inLanguage":"et","@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":"et"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"et","@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":"et","@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\/et\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/comments?post=3044"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3044\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3044\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media\/3045"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media?parent=3044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/categories?post=3044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/tags?post=3044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}