Promesa: then versus catch
¿Son iguales estos fragmentos de código? En otras palabras, ¿se comportan de la misma manera en cualquier circunstancia, para cualquier función de controlador?
promise.then(f1).catch(f2);
Versus:
promise.then(f1, f2);
La respuesta corta es: no, no son iguales:
La diferencia es que si ocurre un error en f1
, entonces aqui es manejado por .catch
:
promise
.then(f1)
.catch(f2);
…Pero no aquí:
promise
.then(f1, f2);
Esto se debe a que se pasa un error por la cadena y en la segunda pieza del código no hay una cadena debajo de f1
.
En otras palabras, .then
pasa los resultados/errores al siguiente .then/catch
. Entonces, en el primer ejemplo, hay un catch
debajo, y en el segundo no lo hay, por lo que el error no se maneja.