Tengo dos funciones, inicio de sesión (en fileB.js):
export const login = async (data) => { try { const response = await auth.login(data); return response; } catch (e) { return new Error(e); } };y loginProcess (en fileA.js):
const loginProcess = (data) => { login(data) .then((response) => { if (response.status === 200) { } }) .catch((e) => { setError(true); }); }; Si tengo un error dentro de la función de inicio de login() , devuelve un new Error(e) , pero dentro loginProcess() el error de inicio de login() no se detecta por catch sino con then . Necesito detectar el new Error de login() dentro de catch en loginProcess() , ¿cómo puedo solucionarlo?
Está convirtiendo el rechazo de la promesa en el cumplimiento de la promesa al devolver un objeto de error.
Volver a sintonizar un valor no prometido del bloque catch cumplirá la promesa devuelta por la función de inicio de login con el valor de retorno del bloque catch .
Para rechazar la promesa devuelta por la función de inicio de login :
Vuelva a lanzar el error capturado por el bloque catch , o
Elimine el bloque try-catch de la función de inicio de login y deje que el código de llamada maneje el error.
la función de inicio de login podría reescribirse como:
export const login = (data) => { return auth.login(data); }; Le sugiero que elija la segunda opción y vuelva a escribir la función de inicio de login como se muestra arriba. No hay necesidad de un bloque catch que simplemente vuelva a lanzar el error.