Link Search Menu Expand Document (external link)

JS 1.11 Single-thread programming

Table of contents


Javascript är ett single-thread språk, vilket innebär att det har en call stack och körs synkront. Detta kan dock innebära problem, om en funktion tar tid på sig innan den exekveras eller om den behöver vänta på någonting (till exempel att hämtad data ska returneras). Det kallas för blocking. 1


Call stack

En stack är en linjär datastruktur som kör kod i en viss ordning, till exempel LIFO(Last In First Out) eller FILO(First In Last Out). Call stacken håller ordning på vilken del av koden som körs och vad som står på tur. JavaScript har alltså en call stack. 2


Synkrona och asynkrona exekveringar

Synkrona exekveringar körs i sekvens, det vill säga programmet körs rad för rad. Varje gång en funktion körs så väntar programmet tills den funktionen returneras innan det kör nästa rad kod.

Asynkrona exekveringar körs däremot inte i sekvens. Programmet väntar inte tills en asynkron funktion är klar, utan går direkt till nästa kodrad. 3


Multi-threading

Det vanligaste sättet att hantera asynkrona exekveringar är med multi-threading, där varje tråd hanterar sin egen uppgift/exekvering. JavaScript är dock single-thread, och kan alltså inte köra flera trådar med olika uppgifter samtidigt. 3


Asynkron exekvering i ett single-thread språk

Mer om hur asynkron exekvering fungerar i JavaScript finns att läsa här.


Referenser