Quiz: 9 domande sulle Promise in JavaScript
Non lasciare mai più una promessa in sospeso!
Conosci le Promise di JavaScript?
- Metti alla prova le tue abilità JavaScript! 🚀
- Cerca gli indizi (pulsante grande, angolo in basso).
- Prova il codice nella Console del tuo browser (prova la scorciatoia
F12o cercala) oppure usa repl.it*. - Sentiti libero di scrivermi su X @justsml. Mi farebbe piacere sapere cosa ne pensi!
👇 Completa le 9 domande qui sotto 👇
Quale sarà l’output del seguente codice?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!'))})p.catch(error => console.log(error.message))p.catch(error => console.log(error.message))Creiamo una Promise usando il costruttore, attivando immediatamente un errore con la callback reject.
Poi i gestori .catch funzionano come .addEventListener(event, callback) del DOM o .on(event, callback) di Event Emitter, dove è possibile aggiungere più callback di gestione. Ognuna verrà chiamata con gli stessi argomenti.
Quale sarà l’output del seguente codice?
var p = new Promise((resolve, reject) => { return Promise.reject(Error('The Fails!'))})p.catch(error => console.log(error.message))p.catch(error => console.log(error.message))Quando si utilizza il costruttore Promise, è necessario invocare le callback resolve() o reject(). Il costruttore Promise ignora il valore di ritorno dell’esecutore, quindi la Promise aggiuntiva creata con Promise.reject() non è concatenata a p. I due handler sono attaccati a p, che rimane in sospeso, mentre la promise rifiutata restituita viene segnalata come non gestita dall’ambiente host.
Quale sarà l’output del seguente codice?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!')) }) .catch(error => console.log(error)) .then(error => console.log(error))Quando si concatenano .then e .catch, è utile pensarli come una serie di passaggi. Ogni .then riceve il valore restituito dal .then precedente (come suo argomento). Tuttavia, se il tuo “passaggio” incontra un errore, tutti i successivi .then verranno saltati fino a quando non si incontra un .catch. Se vuoi sovrascrivere un errore, tutto ciò che devi fare è restituire un valore non di errore. Può essere accessibile tramite qualsiasi .then successivo.
Quale sarà l’output del seguente codice?
var p = new Promise((resolve, reject) => { reject(Error('The Fails!')) }) .catch(error => console.log(error.message)) .catch(error => console.log(error.message))Quando si concatenano i .catch, ognuno gestisce solo gli errori lanciati nei precedenti passaggi .then o .catch. In questo esempio il primo .catch restituisce il console.log che potrebbe essere accessibile solo aggiungendo un .then() dopo entrambi i .catch.
Quale sarà l’output del seguente codice?
new Promise((resolve, reject) => { resolve('Success!') }) .then(() => { throw Error('Oh noes!') }) .catch(error => { return "actually, that worked" }) .catch(error => console.log(error.message))Suggerimento: I .catch possono essere usati per ignorare (o sovrascrivere) gli errori semplicemente restituendo un valore regolare.
Questo trucco funziona solo quando c’è un successivo .then per ricevere il valore.
Quale sarà l’output del seguente codice?
Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) })Suggerimento: I .then passano i dati in sequenza, dal return value al successivo .then(value => /* handle value */).
Un return è fondamentale per passare un valore al successivo .then.
Quale sarà l’output del seguente codice?
Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) return data }) .then(console.log)Ci sono 2 chiamate a console.log che verranno eseguite.
Quale sarà l’output del seguente codice?
Promise.resolve('Success!') .then(data => { data.toUpperCase() }) .then(data => { console.log(data) })Suggerimento: I .then passano i dati in sequenza, dal return value al successivo .then(value => /* handle value */).
Un return è fondamentale per passare un valore al .then successivo.
Quale sarà l’output del seguente codice?
Promise.resolve('Success!') .then(() => { throw Error('Oh noes!') }) .catch(error => { return 'actually, that worked' }) .then(data => { throw Error('The fails!') }) .catch(error => console.log(error.message))