retour au cours

Promesse: then contre catch

Ces fragments de code sont-ils égaux? En d’autres termes, se comportent-ils de la même manière en toutes circonstances, pour toutes les fonctions gestionnaires?

promise.then(f1).catch(f2);

Contre:

promise.then(f1, f2);

La réponse courte est : non, ils ne sont pas égaux :

La différence est que si une erreur survient dans f1, elle est gérée par .catch ici :

promise
  .then(f1)
  .catch(f2);

…Mais pas ici:

promise
  .then(f1, f2);

En effet, une erreur est transmise dans la chaîne et, dans le second code, il n’y a pas de chaîne à la suite de f1.

En d’autres termes, .then transmet les résultats/erreurs au prochain .then/catch. Donc, dans le premier exemple, il y a un catch en dessous, et dans le second – il n’y en a pas, donc l’erreur n’est pas gérée.