Creare una funzione sleep in Javascript

Mattepuffo's logo
Creare una funzione sleep in Javascript

Creare una funzione sleep in Javascript

Javascript ha la funzione built-in setTimeout per impostare un timeout al codice.

Ma in realtà questa funzione esegue un codice in maniera asincrona, ma non fa un vero e poprio sleep.

Infatti provate ad eseguire banalmente questo codice:

console.log('UNO');
setTimeout(() => {
    console.log('DUE');
}, 3000);
console.log('TRE');

In console vedrete:

UNO
TRE
DUE

Che non è quello che vogliamo quando abbiamo bisogno di mandare in sleep il codice.

Questa è una valida alternativa:

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function myPrint() {
    console.log('UNO');
    await sleep(2000);
    console.log('DUE');
    await sleep(3000);
    console.log('TRE');
}

myPrint();

Adesso, dopo ogni print, il codice si bloccherà prima di stampare quello successivo.

Enjoy!


Condividi

Commentami!