{"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":"asynkront-og-enkelttradet-javascript-moter-hendelseslokken","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","title":{"rendered":"Asynkron og enkelttr\u00e5det JavaScript?"},"content":{"rendered":"<ul class=\"wp-block-list\">\n<li><strong>Kj\u00f8retid<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-javascript-developer\/\">JavaScript<\/a> er et tolket spr\u00e5k, ikke et kompilert spr\u00e5k. Det betyr at det trenger en tolk som konverterer <a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-vue-js-developers\/\">JS<\/a> <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-code-refactoring\/\">kode<\/a> til en maskinkode. Det finnes flere typer tolker (s\u00e5kalte motorer). De mest popul\u00e6re nettlesermotorene er V8 (Chrome), Quantum (Firefox) og WebKit (Safari). V8 brukes for \u00f8vrig ogs\u00e5 i en popul\u00e6r kj\u00f8retid som ikke er nettleser, <a href=\"https:\/\/thecodest.co\/nb\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a>.<\/p>\n\n\n\n<p>Hver motor inneholder en minnebunke, en anropsstabel, en hendelsesl\u00f8kke, en tilbakekallingsk\u00f8 og en WebAPI med HTTP-foresp\u00f8rsler, tidtakere, hendelser osv., alt implementert p\u00e5 sin egen m\u00e5te for raskere og sikrere tolkning av JS-koden.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/runtime-architecture.png\" alt=\"JavaScript-utvikling\" title=\"JavaScript-utvikling\"\/><\/figure>\n\n\n\n<p><em>Grunnleggende JS-arkitektur for kj\u00f8retid. Forfatter: Alex Zlatkov<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Enkelttr\u00e5d<\/strong><\/h2>\n\n\n\n<p>Et spr\u00e5k med \u00e9n tr\u00e5d er et spr\u00e5k med \u00e9n enkelt anropsstabel og \u00e9n enkelt minnebunke. Det betyr at det bare kj\u00f8rer \u00e9n ting om gangen.<\/p>\n\n\n\n<p>A&nbsp;<code>stabel<\/code>&nbsp;er en kontinuerlig region i minnet som allokerer lokal kontekst for hver funksjon som kj\u00f8res.<\/p>\n\n\n\n<p>A&nbsp;<code>haug<\/code>&nbsp;er en mye st\u00f8rre region som lagrer alt som allokeres dynamisk.<\/p>\n\n\n\n<p>A&nbsp;<code>anropsstabel<\/code>&nbsp;er en <a href=\"https:\/\/thecodest.co\/nb\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> struktur som i utgangspunktet registrerer hvor vi befinner oss i programmet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Anropsstabel<\/strong><\/h3>\n\n\n\n<p>La oss skrive en enkel kode og f\u00f8lge med p\u00e5 hva som skjer i anropsstakken.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/stack.gif\" alt=\"JavaScript programvareutvikling\" title=\"JavaScript programvareutvikling\"\/><\/figure>\n\n\n\n<p>Som du kan se, legges funksjonene til i stakken, utf\u00f8res og slettes senere. Det er den s\u00e5kalte LIFO-m\u00e5ten - Last In, First Out. Hver oppf\u00f8ring i anropsstakken kalles en&nbsp;<code>stabelramme<\/code>.<\/p>\n\n\n\n<p>Kunnskap om anropsstakken er nyttig for \u00e5 lese feilstakkspor. Vanligvis st\u00e5r den n\u00f8yaktige \u00e5rsaken til feilen \u00f8verst i f\u00f8rste linje, selv om rekkef\u00f8lgen p\u00e5 kodeutf\u00f8relsen er nedenfra og opp.<\/p>\n\n\n\n<p>Noen ganger kan du h\u00e5ndtere en popul\u00e6r feil, varslet av\u00a0<code>Maksimal st\u00f8rrelse p\u00e5 anropsstakken overskredet<\/code>. Det er enkelt \u00e5 f\u00e5 til dette ved hjelp av rekursivitet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">funksjon foo() {\n    foo()\n}\nfoo()<\/code><\/pre>\n\n\n\n<p>og nettleseren eller terminalen v\u00e5r fryser. Alle nettlesere, selv i ulike versjoner, har ulike grenser for st\u00f8rrelsen p\u00e5 anropsstakken. I de aller fleste tilfeller er de tilstrekkelige, og problemet b\u00f8r s\u00f8kes et annet sted.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Blokkert anropsstabel<\/strong><\/h3>\n\n\n\n<p>Her er et eksempel p\u00e5 blokkering av JS-tr\u00e5den. La oss pr\u00f8ve \u00e5 lese en&nbsp;<code>foo<\/code>&nbsp;fil og en&nbsp;<code>bar<\/code>&nbsp;ved hjelp av <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-node-js-used-for\/\">Knutepunkt<\/a>.js synkron funksjon&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-kode\" title=\"JavaScript-kode\"\/><\/figure>\n\n\n\n<p>Dette er en loopet GIF. Som du ser, venter JS-motoren til det f\u00f8rste kallet i&nbsp;<code>readFileSync<\/code>&nbsp;er fullf\u00f8rt. Men dette vil ikke skje fordi det ikke finnes noen&nbsp;<code>foo<\/code>&nbsp;filen, slik at den andre funksjonen aldri vil bli kalt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Asynkron oppf\u00f8rsel<\/strong><\/h2>\n\n\n\n<p>JS kan imidlertid ogs\u00e5 v\u00e6re ikke-blokkerende og oppf\u00f8re seg som om den var flertr\u00e5det. Det betyr at den ikke venter p\u00e5 svaret fra en <a href=\"https:\/\/thecodest.co\/nb\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> anrop, I\/O-hendelser osv. og kan fortsette kodekj\u00f8ringen. Dette er mulig takket v\u00e6re JS-motorene som (under panseret) bruker ekte multi-threading-spr\u00e5k, som C++ (Chrome) eller Rust (Firefox). De tilbyr <a href=\"https:\/\/thecodest.co\/nb\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> med <a href=\"https:\/\/thecodest.co\/nb\/blog\/find-your-ideal-stack-for-web-development\/\">Internett<\/a> API under nettleserhettene eller f.eks. I\/O API under 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 programmeringsspr\u00e5k\" title=\"JavaScript programmeringsspr\u00e5k\"\/><\/figure>\n\n\n\n<p>I GIF-en ovenfor kan vi se at den f\u00f8rste funksjonen skyves til anropsstakken og&nbsp;<code>Hei<\/code>&nbsp;utf\u00f8res umiddelbart i konsollen.<\/p>\n\n\n\n<p>Deretter kaller vi&nbsp;<code>setTimeout<\/code>&nbsp;funksjon som tilbys av nettleserens WebAPI. Den g\u00e5r til anropsstakken og dens asynkrone tilbakekalling&nbsp;<code>foo<\/code>&nbsp;funksjonen g\u00e5r til WebApi-k\u00f8en, hvor den venter p\u00e5 anropet, som er satt til \u00e5 skje etter 3 sekunder.<\/p>\n\n\n\n<p>I mellomtiden fortsetter programmet koden, og vi ser&nbsp;<code>Hei. Jeg er ikke blokkert<\/code>&nbsp;i konsollen.<\/p>\n\n\n\n<p>Etter at den er p\u00e5kalt, g\u00e5r hver funksjon i WebAPI-k\u00f8en til&nbsp;<code>Tilbakekallingsk\u00f8<\/code>. Det er her funksjonene venter til anropsstakken er tom. N\u00e5r det skjer, flyttes de dit \u00e9n etter \u00e9n.<\/p>\n\n\n\n<p>S\u00e5 n\u00e5r v\u00e5r&nbsp;<code>setTimeout<\/code>&nbsp;timeren fullf\u00f8rer nedtellingen, vil v\u00e5r&nbsp;<code>foo<\/code>&nbsp;funksjonen g\u00e5r til tilbakekallingsk\u00f8en, venter til anropsstakken blir tilgjengelig, g\u00e5r dit, blir utf\u00f8rt, og vi ser&nbsp;<code>Hei fra asynkron tilbakekalling<\/code>&nbsp;i konsollen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hendelsessl\u00f8yfe<\/strong><\/h3>\n\n\n\n<p>Sp\u00f8rsm\u00e5let er hvordan kj\u00f8retiden vet at anropsstakken er tom, og hvordan hendelsen i tilbakekallingsk\u00f8en blir p\u00e5kalt? M\u00f8t hendelsesl\u00f8kken. Det er en del av JS-motoren. Denne prosessen sjekker hele tiden om anropsstakken er tom, og hvis den er det, overv\u00e5ker den om det finnes en hendelse i tilbakeringingsk\u00f8en som venter p\u00e5 \u00e5 bli p\u00e5kalt.<\/p>\n\n\n\n<p>Det er all magien bak kulissene!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Oppsummering av teorien<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Samtidighet og parallellisme<\/strong><\/h3>\n\n\n\n<p><code>Samtidighet<\/code>&nbsp;betyr at flere oppgaver utf\u00f8res samtidig, men ikke simultant. F.eks. to oppgaver som utf\u00f8res i overlappende tidsperioder.<\/p>\n\n\n\n<p><code>Parallellisme<\/code>&nbsp;betyr \u00e5 utf\u00f8re to eller flere oppgaver samtidig, f.eks. \u00e5 utf\u00f8re flere beregninger samtidig.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Tr\u00e5der og prosesser<\/strong><\/h3>\n\n\n\n<p><code>Tr\u00e5der<\/code>&nbsp;er en sekvens av kodeutf\u00f8relser som kan utf\u00f8res uavhengig av hverandre.<\/p>\n\n\n\n<p><code>Prosess<\/code>&nbsp;er en instans av et program som kj\u00f8rer. Et program kan ha flere prosesser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Synkron og asynkron<\/strong><\/h3>\n\n\n\n<p>I&nbsp;<code>synkron<\/code>&nbsp;programmering utf\u00f8res oppgavene etter hverandre. Hver oppgave venter p\u00e5 at en eventuell tidligere oppgave er fullf\u00f8rt, og utf\u00f8res f\u00f8rst da.<\/p>\n\n\n\n<p>I&nbsp;<code>asynkron<\/code>&nbsp;programmering, kan du bytte til en annen oppgave n\u00e5r en oppgave er utf\u00f8rt, uten \u00e5 vente p\u00e5 at den forrige skal bli ferdig.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Synkront og asynkront i et enkelt- og flertr\u00e5det milj\u00f8<\/strong><\/h3>\n\n\n\n<p><code>Synkron med en enkelt tr\u00e5d<\/code>: Oppgavene utf\u00f8res \u00e9n etter \u00e9n. Hver oppgave venter p\u00e5 at den forrige oppgaven skal bli utf\u00f8rt.<\/p>\n\n\n\n<p><code>Synkron med flere tr\u00e5der<\/code>: Oppgaver utf\u00f8res i forskjellige tr\u00e5der, men venter p\u00e5 andre oppgaver som utf\u00f8res i en annen tr\u00e5d.<\/p>\n\n\n\n<p><code>Asynkron med \u00e9n enkelt tr\u00e5d<\/code>: Oppgaver begynner \u00e5 bli utf\u00f8rt uten \u00e5 vente p\u00e5 at en annen oppgave skal bli ferdig. P\u00e5 et gitt tidspunkt kan bare \u00e9n oppgave utf\u00f8res.<\/p>\n\n\n\n<p><code>Asynkron med flere tr\u00e5der<\/code>: Oppgaver utf\u00f8res i forskjellige tr\u00e5der uten \u00e5 vente p\u00e5 at andre oppgaver skal fullf\u00f8res, og de fullf\u00f8rer oppgavene sine uavhengig av hverandre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>JavaScript-klassifisering<\/strong><\/h2>\n\n\n\n<p>Hvis vi ser p\u00e5 hvordan JS-motorene fungerer under panseret, kan vi klassifisere JS som et asynkront og entr\u00e5det tolket spr\u00e5k. Ordet \"tolket\" er sv\u00e6rt viktig fordi det betyr at spr\u00e5ket alltid vil v\u00e6re kj\u00f8retidsavhengig og aldri like raskt som kompilerte spr\u00e5k med innebygd flertr\u00e5dning.<\/p>\n\n\n\n<p>Det er verdt \u00e5 merke seg at Node.js kan oppn\u00e5 reell multitr\u00e5ding, forutsatt at hver tr\u00e5d startes som en separat prosess. Det finnes biblioteker for dette, men Node.js har en innebygd funksjon som heter&nbsp;<a href=\"https:\/\/nodejs.org\/api\/worker_threads.html#worker_threads_worker_threads\">Arbeidertr\u00e5der<\/a>.<\/p>\n\n\n\n<p>Alle hendelsesloop-GIF-er kommer fra&nbsp;<a href=\"https:\/\/github.com\/latentflip\/loupe\">Lupe<\/a>&nbsp;applikasjon laget av Philip Roberts, der du kan teste dine asynkrone scenarier.<\/p>\n\n\n\n<p><b>Les mer om dette:<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Hvorfor b\u00f8r du (sannsynligvis) bruke 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\/\">Kvalitet f\u00f8rst! 5 enkle trinn for \u00e5 lint koden din med GitHub-arbeidsflyter i JavaScript-prosjektet<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-to-improve-vue-js-apps-some-practical-tips\/\">Hvordan forbedre Vue.js-apper? Noen praktiske tips<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>JavaScript er et enkelttr\u00e5det spr\u00e5k og samtidig ogs\u00e5 ikke-blokkerende, asynkront og samtidig. Denne artikkelen forklarer hvordan det skjer.<\/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\/nb\/blogg\/asynkront-og-enkelttradet-javascript-moter-hendelseslokken\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\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\/nb\/blogg\/asynkront-og-enkelttradet-javascript-moter-hendelseslokken\/\" \/>\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 minutter\" \/>\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\":\"nb-NO\",\"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\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\",\"@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\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Asynkron og enkelttr\u00e5det 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\/nb\/blogg\/asynkront-og-enkelttradet-javascript-moter-hendelseslokken\/","og_locale":"nb_NO","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\/nb\/blogg\/asynkront-og-enkelttradet-javascript-moter-hendelseslokken\/","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 minutter"},"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":"nb-NO","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":"Asynkron og enkelttr\u00e5det 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":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO","@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\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3044"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3044\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3044\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3045"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}