DanLevy.net

Visualizzare le Promise

Attraversa...

Hero image for Visualizzare le Promise

Per visualizzare come vengono eseguite le Promise, definiamo un nuovo metodo delay(millisecs).

function delay(millisecs) {
return new Promise(resolve => {
setTimeout(() => resolve(millisecs), millisecs);
});
}

Questo è un metodo di utilità che si risolverà una volta trascorso il timeout.

Il ritardo in millisecondi verrà passato al callback di .then.

Esaminiamo 4 esempi (con timeline animate).

Esempio #1/4

Questo mostra come l’esecuzione di console.log() verrà ritardata da delay(msec).

delay(1000).then(() => console.log("done"));

Timeline che mostra delay 1000 poi console log in esecuzione dopo un secondo

Esempio #2/4

Questo mostra un errore comune.

Il console.log viene eseguito proprio quando il delay(1000) inizia. Non dopo il ritardo come probabilmente volevi.

Poiché console.log restituisce undefined, il nostro .then() viene ignorato silenziosamente.

Nota la differenza tra typeof console.log === 'function' e typeof console.log() === undefined.

Generalmente l’uso desiderato per console.log è mostrato nell’Esempio #1. Assicurati di passare funzioni a .then e .catch.

delay(1000).then(console.log("done"));

Timeline che mostra console log in esecuzione immediatamente prima che il ritardo finisca

Esempio #3/4

3 Promise vengono eseguite simultaneamente.

delay(1000).then(console.log);
delay(2000).then(console.log);
delay(3000).then(console.log);

Timeline che mostra tre promise di ritardo che si risolvono dopo uno due e tre secondi

Esempio #4/4

Promise.all con 3 Promise delay. Verranno eseguite simultaneamente.

Promise.all([delay(1000), delay(2000), delay(3000)]).then(console.log);

Timeline che mostra Promise all che attende tutte e tre le promise di ritardo

Crediti: