Příslib: then oproti catch
Jsou tyto fragmenty kódu ekvivalentní? Jinými slovy, chovají se zcela stejně za každých okolností a pro jakékoli handlery?
příslib.then(f1).catch(f2);
Oproti:
příslib.then(f1, f2);
Stručná odpověď zní: ne, nejsou ekvivalentní:
Rozdíl je v tom, že pokud ve f1 nastane chyba, je zde ošetřena funkcí .catch:
příslib
.then(f1)
.catch(f2);
…Ale zde ne:
příslib
.then(f1, f2);
Je to proto, že chyba je předána řetězem, ale ve druhém uvedeném kódu za f1 žádný řetěz není.
Jinými slovy, .then předá výsledky nebo chyby dalšímu .then/catch. V prvním příkladu je za ním catch, ale ve druhém není, takže chyba zůstane neošetřena.