zpět k lekci

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.