Vad är asynchronous funktion?

Programmering fungerar oftast på det sättet att mjukvarukod läses från toppen och sedan neråt (sekventiell programmering) i ett program. Med hjälp av asynchronous functions i javascript (som till sin grund är ett synchronous programmeringsspråk) ger det möjligheten till att renderingen av en applikation inte pausas i väntan på delfunktioner ska bli klara. Du pausar eller fryser inte en del av applikationen i väntan på att en annan del ska bli klar, med andra ord.

Ett exempel på fördelar kan vara att du kan synka in data från extern källa, i form av ett API - men samtidigt låta annan funktionaliteten fortfarande köras i bakgrunden som inhämtningen pågår. Detta kan göras genom att deklarera async som erbjuder await (promises) funktionalitet som fungerar som ett löfte i väntan på svar – await gör det möjligt att pausa funktionen iväntan på svar och tillåter resten av koden renderas.

Hur asynchronous funktioner deklareras

Asynchronous functions ger den möjlighet att deklarera ett löfte (Await). Under den tiden så renderar applikationen resterande programkod. Men när väl löftet har fått ett svar så körs resterande kod i funktionen. För att undvika att gå in på detaljnivå på vad som sker via Await så kan javascript med hjälp av web workers hantera en ’background threads’ som resulterar i att du får ingen blockerande kod för att funktioner att köras. Läs mer här om multithreading (nytt fönster).

Nedan ser vi en bild på kod som använder sig av async funktioner där du kan se på resultatet i console.log till höger hur funktion nummer två inte blockeras av inhämtningen av extern data.

code snippet of javascript code with asynchronous function declared with github get request.

För att visa ett tydligare exempel så kan du se kodsnutten nedan där vi loopar 10,000 gånger innan nästa funktion körs. Du ser tydligt till höger hur skillnaden på resultat blir till höger om du jämnför de olika bilderna.

javascript code snippet with normal function declared with a for loop looping 10000 times.