{"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":"asinchroninis-ir-vienos-gijos-javascript-susitinka-su-ivykiu-ciklu","status":"publish","type":"post","link":"https:\/\/thecodest.co\/lt\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","title":{"rendered":"Asinchroninis ir viengrandinis JavaScript?"},"content":{"rendered":"<ul class=\"wp-block-list\">\n<li><strong>Vykdymo laikas<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/lt\/blog\/hire-javascript-developer\/\">JavaScript<\/a> yra interpretuojama, o ne kompiliuojama kalba. Tai rei\u0161kia, kad jai reikia interpretatoriaus, kuris konvertuoja <a href=\"https:\/\/thecodest.co\/lt\/blog\/hire-vue-js-developers\/\">JS<\/a> <a href=\"https:\/\/thecodest.co\/lt\/dictionary\/what-is-code-refactoring\/\">kodas<\/a> \u012f ma\u0161inin\u012f kod\u0105. Yra keli\u0173 tip\u0173 interpretatoriai (vadinamieji varikliai). Populiariausi nar\u0161ykli\u0173 varikliai yra V8 (\"Chrome\"), Quantum (\"Firefox\") ir WebKit (\"Safari\"). Beje, V8 taip pat naudojamas populiarioje ne nar\u0161ykl\u0117s paleidimo sistemoje, <a href=\"https:\/\/thecodest.co\/lt\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a>.<\/p>\n\n\n\n<p>Kiekviename variklyje yra atminties kr\u016bva, skambu\u010di\u0173 stekas, \u012fvyki\u0173 ciklas, atgalini\u0173 skambu\u010di\u0173 eil\u0117 ir WebAPI su HTTP u\u017eklausomis, laikma\u010diais, \u012fvykiais ir t. t. Visa tai \u012fgyvendinta savaip, kad JS kodas b\u016bt\u0173 grei\u010diau ir saugiau interpretuojamas.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/runtime-architecture.png\" alt=\"JavaScript k\u016brimas\" title=\"JavaScript k\u016brimas\"\/><\/figure>\n\n\n\n<p><em>Pagrindin\u0117 JS paleidimo architekt\u016bra. Autorius: Autorius: Alex Zlatkov<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Viena gija<\/strong><\/h2>\n\n\n\n<p>Vienos gijos kalba - tai kalba su vienu i\u0161kvietim\u0173 kaminu ir viena atminties kr\u016bva. Tai rei\u0161kia, kad vienu metu joje vykdomas tik vienas dalykas.<\/p>\n\n\n\n<p>A&nbsp;<code>kamino<\/code>&nbsp;yra i\u0161tisin\u0117 atminties sritis, kurioje kiekvienai vykdomai funkcijai priskiriamas vietinis kontekstas.<\/p>\n\n\n\n<p>A&nbsp;<code>kr\u016bva<\/code>&nbsp;yra daug didesnis regionas, kuriame saugoma visa dinami\u0161kai paskirstyta informacija.<\/p>\n\n\n\n<p>A&nbsp;<code>skambu\u010di\u0173 stekas<\/code>&nbsp;yra <a href=\"https:\/\/thecodest.co\/lt\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">duomenys<\/a> strukt\u016br\u0105, kurioje i\u0161 esm\u0117s \u012fra\u0161oma, kurioje programos vietoje esame.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Skambu\u010di\u0173 stekas<\/strong><\/h3>\n\n\n\n<p>Para\u0161ykime paprast\u0105 kod\u0105 ir steb\u0117kime, kas vyksta skambu\u010di\u0173 steke.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/stack.gif\" alt=\"JavaScript programin\u0117s \u012frangos k\u016brimas\" title=\"JavaScript programin\u0117s \u012frangos k\u016brimas\"\/><\/figure>\n\n\n\n<p>Kaip matote, funkcijos \u012ftraukiamos \u012f stek\u0105, vykdomos ir v\u0117liau i\u0161trinamos. Tai vadinamasis LIFO b\u016bdas - paskutinis \u012feina, pirmas i\u0161eina. Kiekvienas skambu\u010di\u0173 steko \u012fra\u0161as vadinamas&nbsp;<code>kamino r\u0117mas<\/code>.<\/p>\n\n\n\n<p>\u017dinios apie i\u0161kvietim\u0173 stek\u0105 yra naudingos skaitant klaid\u0173 steko p\u0117dsakus. Paprastai tiksli klaidos prie\u017eastis yra pirmosios eilut\u0117s vir\u0161uje, nors kodo vykdymo tvarka yra i\u0161 apa\u010dios \u012f vir\u0161\u0173.<\/p>\n\n\n\n<p>Kartais galite susidoroti su populiaria klaida, apie kuri\u0105 prane\u0161ama\u00a0<code>Vir\u0161ytas maksimalus skambu\u010di\u0173 kamino dydis<\/code>. Tai lengva gauti naudojant rekursij\u0105:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">funkcija foo() {\n    foo()\n}\nfoo()<\/code><\/pre>\n\n\n\n<p>ir m\u016bs\u0173 nar\u0161ykl\u0117 arba terminalas u\u017estringa. Kiekviena nar\u0161ykl\u0117, net ir skirtingos j\u0173 versijos, turi skirting\u0105 skambu\u010di\u0173 kamino dyd\u017eio rib\u0105. Daugeliu atvej\u0173 j\u0173 pakanka ir problemos reik\u0117t\u0173 ie\u0161koti kitur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>U\u017eblokuotas skambu\u010di\u0173 stekas<\/strong><\/h3>\n\n\n\n<p>\u010cia pateikiamas JS gijos blokavimo pavyzdys. Pabandykime perskaityti&nbsp;<code>foo<\/code>&nbsp;fail\u0105 ir&nbsp;<code>baras<\/code>&nbsp;naudojant <a href=\"https:\/\/thecodest.co\/lt\/dictionary\/what-is-node-js-used-for\/\">Mazgas<\/a>.js sinchronin\u0117 funkcija&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 kodas\" title=\"JavaScript kodas\"\/><\/figure>\n\n\n\n<p>Tai yra kilpinis GIF. Kaip matote, JS variklis laukia, kol bus atliktas pirmasis skambutis&nbsp;<code>readFileSync<\/code>&nbsp;baigtas. Ta\u010diau tai ne\u012fvyks, nes n\u0117ra&nbsp;<code>foo<\/code>&nbsp;fail\u0105, tod\u0117l antroji funkcija niekada nebus i\u0161kviesta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Asinchroninis elgesys<\/strong><\/h2>\n\n\n\n<p>Ta\u010diau JS taip pat gali neblokuoti ir elgtis taip, tarsi b\u016bt\u0173 daugiasluoksn\u0117. Tai rei\u0161kia, kad ji nelaukia atsakymo \u012f <a href=\"https:\/\/thecodest.co\/lt\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> i\u0161kvietim\u0105, \u012fvesties ir i\u0161vesties \u012fvykius ir t. t., ir gali t\u0119sti kodo vykdym\u0105. Tai \u012fmanoma d\u0117l JS varikli\u0173, kuriuose naudojamos (po gaubtu) tikros daugiasluoksn\u0117s kalbos, pavyzd\u017eiui, \"C++\" (\"Chrome\") arba \"Rust\" (\"Firefox\"). Jos suteikia <a href=\"https:\/\/thecodest.co\/lt\/blog\/why-us-companies-are-opting-for-polish-developers\/\">mus<\/a> su <a href=\"https:\/\/thecodest.co\/lt\/blog\/find-your-ideal-stack-for-web-development\/\">Tinklalapis<\/a> API po nar\u0161ykl\u0117s gaubtais arba pvz. I\/O API po Node.js.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/callback-queue.gif\" alt=\"JavaScript programavimo kalba\" title=\"JavaScript programavimo kalba\"\/><\/figure>\n\n\n\n<p>Pirmiau pateiktame GIF paveiksl\u0117lyje matome, kad pirmoji funkcija perkeliama \u012f i\u0161kvietim\u0173 stek\u0105 ir&nbsp;<code>Sveiki<\/code>&nbsp;i\u0161 karto \u012fvykdomas konsol\u0117je.<\/p>\n\n\n\n<p>Tada i\u0161kvie\u010diame&nbsp;<code>setTimeout<\/code>&nbsp;funkcija, kuri\u0105 teikia nar\u0161ykl\u0117s WebAPI. Ji patenka \u012f skambu\u010di\u0173 stek\u0105 ir asinchronin\u012f gr\u012f\u017etam\u0105j\u012f skambut\u012f&nbsp;<code>foo<\/code>&nbsp;funkcija patenka \u012f \"WebApi\" eil\u0119, kur laukia skambu\u010dio, nustatyto po 3 sekund\u017ei\u0173.<\/p>\n\n\n\n<p>Tuo tarpu programa t\u0119sia kod\u0105 ir mes matome&nbsp;<code>Sveiki. A\u0161 nesu u\u017eblokuotas<\/code>&nbsp;konsol\u0117je.<\/p>\n\n\n\n<p>Po to, kai ji i\u0161kvie\u010diama, kiekviena WebAPI eil\u0117je esanti funkcija patenka \u012f&nbsp;<code>Atgalini\u0173 i\u0161kvietim\u0173 eil\u0117<\/code>. \u010cia funkcijos laukia, kol i\u0161kvietim\u0173 stekas bus tu\u0161\u010dias. Kai tai \u012fvyksta, jos ten perkeliamos viena po kitos.<\/p>\n\n\n\n<p>Taigi, kai m\u016bs\u0173&nbsp;<code>setTimeout<\/code>&nbsp;laikmatis baigia skai\u010diuoti laik\u0105, m\u016bs\u0173&nbsp;<code>foo<\/code>&nbsp;funkcija patenka \u012f atgalinio i\u0161kvietimo eil\u0119, laukia, kol i\u0161kvietim\u0173 stekas taps prieinamas, patenka \u012f j\u012f, \u012fvykdoma ir matome&nbsp;<code>Sveiki i\u0161 asinchroninio gr\u012f\u017etamojo ry\u0161io<\/code>&nbsp;konsol\u0117je.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u012evyki\u0173 ciklas<\/strong><\/h3>\n\n\n\n<p>Kyla klausimas, kaip vykdymo laikas su\u017eino, kad i\u0161kvietim\u0173 stekas tu\u0161\u010dias, ir kaip \u012fvykis i\u0161kvie\u010diamas atgalinio ry\u0161io eil\u0117je? Susipa\u017einkite su \u012fvyki\u0173 ciklu. Tai JS variklio dalis. \u0160is procesas nuolat tikrina, ar i\u0161kvietim\u0173 stekas tu\u0161\u010dias, ir, jei taip, stebi, ar gr\u012f\u017etamojo ry\u0161io eil\u0117je yra \u012fvykis, laukiantis i\u0161kvietimo.<\/p>\n\n\n\n<p>Tai visa magija, slypinti u\u017ekulisiuose!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Teorijos apibendrinimas<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Vientisumas ir lygiagretumas<\/strong><\/h3>\n\n\n\n<p><code>Konkuravimas<\/code>&nbsp;rei\u0161kia keli\u0173 u\u017eduo\u010di\u0173 vykdym\u0105 vienu metu, bet ne vienu metu. Pvz., dvi u\u017eduotys atliekamos sutampan\u010diais laikotarpiais.<\/p>\n\n\n\n<p><code>Lygiagretumas<\/code>&nbsp;tai dviej\u0173 ar daugiau u\u017eduo\u010di\u0173 atlikimas vienu metu, pvz., keli\u0173 skai\u010diavim\u0173 atlikimas vienu metu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Si\u016blai ir procesai<\/strong><\/h3>\n\n\n\n<p><code>Si\u016blai<\/code>&nbsp;yra kodo vykdymo seka, kuri gali b\u016bti vykdoma nepriklausomai viena nuo kitos.<\/p>\n\n\n\n<p><code>Procesas<\/code>&nbsp;yra veikian\u010dios programos egzempliorius. Programa gali tur\u0117ti kelis procesus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sinchroninis ir asinchroninis<\/strong><\/h3>\n\n\n\n<p>Svetain\u0117je&nbsp;<code>sinchroninis<\/code>&nbsp;programavimas, u\u017eduotys vykdomos viena po kitos. Kiekviena u\u017eduotis laukia, kol bus baigta ankstesn\u0117 u\u017eduotis, ir tik tada yra vykdoma.<\/p>\n\n\n\n<p>Svetain\u0117je&nbsp;<code>asinchroninis<\/code>&nbsp;programavimas, kai viena u\u017eduotis \u012fvykdyta, galite pereiti prie kitos u\u017eduoties, nelaukdami, kol bus baigta ankstesn\u0117.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sinchroninis ir asinchroninis darbas vieno ir keli\u0173 gij\u0173 aplinkoje<\/strong><\/h3>\n\n\n\n<p><code>Sinchroninis su viena gija<\/code>: U\u017eduotys vykdomos viena po kitos. Kiekviena u\u017eduotis laukia, kol bus \u012fvykdyta ankstesn\u0117 u\u017eduotis.<\/p>\n\n\n\n<p><code>Sinchroninis su keliais srautais<\/code>: U\u017eduotys vykdomos skirtingose gijose, ta\u010diau laukiama, kol bet kurioje kitoje gijoje bus \u012fvykdytos kitos u\u017eduotys.<\/p>\n\n\n\n<p><code>Asinchroninis su viena gija<\/code>: U\u017eduotys pradedamos vykdyti nelaukiant, kol baigsis kita u\u017eduotis. Vienu metu gali b\u016bti vykdoma tik viena u\u017eduotis.<\/p>\n\n\n\n<p><code>Asinchroninis su keliais srautais<\/code>: U\u017eduotys vykdomos skirtingais srautais, nelaukiant, kol bus u\u017ebaigtos kitos u\u017eduotys, ir baigiamos vykdyti nepriklausomai.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>JavaScript klasifikacija<\/strong><\/h2>\n\n\n\n<p>Jei atsi\u017evelgsime \u012f tai, kaip JS varikliai veikia po gaubtu, galime priskirti JS asinchroninei ir vieno sriegio interpretuojamai kalbai. \u017dodis \u201cinterpretuota\u201d yra labai svarbus, nes jis rei\u0161kia, kad kalba visada priklausys nuo vykdymo laiko ir niekada nebus tokia greita kaip sukompiliuotos kalbos su integruotais keliais srautais.<\/p>\n\n\n\n<p>Pa\u017eym\u0117tina, kad Node.js gali pasiekti real\u0173 daugiasluoksni\u0161kum\u0105, jei kiekviena gija paleid\u017eiama kaip atskiras procesas. Tam yra bibliotek\u0173, ta\u010diau Node.js turi integruot\u0105 funkcij\u0105, vadinam\u0105&nbsp;<a href=\"https:\/\/nodejs.org\/api\/worker_threads.html#worker_threads_worker_threads\">Darbuotoj\u0173 gijos<\/a>.<\/p>\n\n\n\n<p>Visi \u012fvykio kilpos GIF failai yra i\u0161&nbsp;<a href=\"https:\/\/github.com\/latentflip\/loupe\">Lupa<\/a>&nbsp;Philipo Robertso sukurt\u0105 program\u0105, kurioje galite i\u0161bandyti asinchroninius scenarijus.<\/p>\n\n\n\n<p><b>Skaityti daugiau:<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Kod\u0117l tur\u0117tum\u0117te (tikriausiai) naudoti 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\/\">Pirmiausia kokyb\u0117! 5 paprasti \u017eingsniai, kaip JavaScript projekte perbrai\u017eyti kod\u0105 naudojant \"GitHub\" darbo eig\u0105<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-to-improve-vue-js-apps-some-practical-tips\/\">Kaip patobulinti Vue.js programas? Keletas praktini\u0173 patarim\u0173<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>JavaScript yra vienos gijos kalba, kuri kartu yra ir neblokin\u0117, asinchronin\u0117 ir lygiagreti. \u0160iame straipsnyje paai\u0161kinsime, kaip tai vyksta.<\/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\/lt\/tinklarastis\/asinchroninis-ir-vienos-gijos-javascript-susitinka-su-ivykiu-ciklu\/\" \/>\n<meta property=\"og:locale\" content=\"lt_LT\" \/>\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\/lt\/tinklarastis\/asinchroninis-ir-vienos-gijos-javascript-susitinka-su-ivykiu-ciklu\/\" \/>\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 minut\u0117s\" \/>\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\":\"lt-LT\",\"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\":\"lt-LT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"lt-LT\",\"@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\":\"lt-LT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"lt-LT\",\"@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\":\"lt-LT\",\"@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\\\/lt\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Asinchroninis ir viengrandinis 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\/lt\/tinklarastis\/asinchroninis-ir-vienos-gijos-javascript-susitinka-su-ivykiu-ciklu\/","og_locale":"lt_LT","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\/lt\/tinklarastis\/asinchroninis-ir-vienos-gijos-javascript-susitinka-su-ivykiu-ciklu\/","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 minut\u0117s"},"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":"lt-LT","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":"Asinchroninis ir viengrandinis 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":"lt-LT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"]}]},{"@type":"ImageObject","inLanguage":"lt-LT","@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":"lt-LT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"lt-LT","@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":"lt-LT","@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\/lt\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/posts\/3044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/comments?post=3044"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/posts\/3044\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/posts\/3044\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/media\/3045"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/media?parent=3044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/categories?post=3044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/lt\/wp-json\/wp\/v2\/tags?post=3044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}