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.