📢 Nuovo Corso Laravel API disponibile!

Comprensione di process.nextTick()

Quando cerchi di capire il ciclo degli eventi di Node.js, una parte importante è process.nextTick(). Ogni volta che il ciclo degli eventi compie un intero giro, lo chiamiamo tick.

Quando passiamo una funzione a process.nextTick(), istruiamo il motore a eseguire questa funzione alla fine dell’operazione corrente, prima che inizi il prossimo tick del ciclo degli eventi:

process.nextTick(() => {
// fai qualcosa
});

Il ciclo degli eventi è occupato a elaborare il codice della funzione corrente. Quando questa operazione termina, il motore JavaScript esegue tutte le funzioni passate alle chiamate di nextTick durante quell’operazione.

Questa è la nostra maniera di dire al motore JavaScript di elaborare una funzione in modo asincrono (dopo la funzione corrente), ma non appena possibile, senza metterla in coda.

Chiamare setTimeout(() => {}, 0) eseguirà la funzione alla fine del prossimo tick, molto più tardi rispetto all’utilizzo di nextTick(), che prioritizza la chiamata ed esegue la funzione appena prima dell’inizio del prossimo tick.

Usa nextTick() quando vuoi assicurarti che nel prossimo ciclo degli eventi quella funzione sia già stata eseguita.

Un esempio dell’ordine degli eventi:

console.log("Ciao => numero 1");
setImmediate(() => {
console.log("Eseguito prima del timeout => numero 3");
});
setTimeout(() => {
console.log("Il timeout viene eseguito per ultimo => numero 4");
}, 0);
process.nextTick(() => {
console.log("Eseguito al prossimo tick => numero 2");
});

Output:

Ciao => numero 1
Eseguito al prossimo tick => numero 2
Il timeout viene eseguito per ultimo => numero 4
Eseguito prima del timeout => numero 3