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!
javascript settimeout settimer sleep promise async await
Commentami!