Promise: then versus catch
Er disse to fragmenter af kode ens? Med andre ord, gør de det samme i enhver sammenhæng, for enhver handler funktion?
promise.then(f1).catch(f2);
Versus:
promise.then(f1, f2);
Det korte svar er: nej, de er ikke ens:
Forskellen er, at hvis en fejl opstår i f1, så håndteres den af .catch her:
promise
.then(f1)
.catch(f2);
… men ikke her:
promise
.then(f1, f2);
Det er fordi at fejl bliver sendt ned gennem kæden, og i det andet kodeeksempel er der ingen kæde under f1.
Med andre ord, .then sender resultater/fejl videre til den næste .then/catch. Så i det første eksempel er der en catch nedenfor, og i det andet er der ikke, så fejlen håndteres ikke.