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.