Funzioni, Thread ed Esecuzione Asincrona in JavaScript
Devi capire come funziona JavaScript "sotto il cofano".
Ecco una panoramica di funzioni, processi, thread e stili di esecuzione.
Tipi di Funzioni JavaScript
- Funzione nominata: Utilizza un nome specifico. Questo rende facile il debugging.
- Funzione anonima: Non ha un nome. Spesso vengono utilizzate come callback.
- Espressione di funzione: Assegni una funzione a una variabile.
- Arrow Function: Una sintassi più breve che utilizza il simbolo =>.
- IIFE: Una Immediately Invoked Function Expression. Viene eseguita non appena viene definita.
Processo vs. Thread
Un processo è un programma in esecuzione sul tuo computer.
- Ogni processo ha la propria memoria.
- Se un processo va in crash, gli altri continuano a funzionare.
- Esempio: Chrome e Spotify sono processi separati.
Un thread è una piccola unità all'interno di un processo.
- I thread condividono la stessa memoria.
- Consentono a un singolo programma di fare molte cose contemporaneamente.
- Esempio: All'interno di Chrome, un thread renderizza una pagina mentre un altro gestisce i clic del mouse.
Sincrono vs. Asincrono
JavaScript è single-threaded. Gestisce un compito alla volta utilizzando una call stack.
Esecuzione Sincrona:
- I compiti vengono eseguiti uno dopo l'altro.
- Ogni compito attende che il precedente sia terminato.
- I compiti lenti bloccano l'esecuzione del codice.
Esecuzione Asincrona:
- I compiti vengono eseguiti in background.
- Il codice non si ferma mentre attende il completamento di un compito.
- Questo utilizza Web API, una Callback Queue e un Event Loop.
Come funziona l'asincronia:
- JavaScript invia un compito (come un timer) a una Web API.
- Il codice principale continua a girare.
- Una volta terminato il compito, questo passa alla Callback Queue.
- L'Event Loop lo sposta nella Call Stack quando lo stack è vuoto.
Questo mantiene le tue applicazioni web veloci e reattive.