torna alle lezioni

Promise: then versus catch

Questi pezzi di codice sono uguali? In altre parole, si comportano nello stesso modo in ogni circostanza, per ogni funzione handler?

promise.then(f1).catch(f2);

Versus:

promise.then(f1, f2);

La risposta breve è: no, non sono uguali:

La differenza è che se un errore accade in f1, allora è gestito da.catch qui:

promise
  .then(f1)
  .catch(f2);

…Ma non qui:

promise
  .then(f1, f2);

Questo perché un errore è passato giù nella catena, e nel secondo pezzo di codice non c’è una catena sottof1.

In altre parole, .then passa i risultati/errori al prossimo .then/catch. Così nel primo esempio, c’è un catch sotto, e nel secondo – non c’è, così l’errore non è gestito.