Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

318
Vistas
¿Qué devuelve una Promesa protegida por un catch()?

Tengo una función asíncrona que se llama al comienzo de mi código, y solo cuando se hace, pueden suceder más cosas. Normalmente sería algo como

 const initialCheck = () => { return fetch('https://reqres.in/api/users') .then(r => { // do things return r }) } const actualStuff = () => { console.log('hello') } initialCheck() .then(r => { actualStuff() })

El objetivo de esta verificación inicial es asegurarse de que el punto final HTTP ( https://reqres.in/api/users ) sea realmente accesible. Por lo tanto, debería tener en cuenta un problema de conexión y mi solución fue catch() el posible error:

 const initialCheck = () => { return fetch('https://thissitedoesnotexistihopeatleast') .then(r => { // do things when the endpoint is available return r }) .catch(err => { // do something when the endpoint is not availble // nothing is returned }) } const actualStuff = () => { console.log('hello') } initialCheck() .then(r => { actualStuff() })

Mi pregunta: ¿por qué funciona el código anterior?

catch() se ejecuta (y el then() en esa función no lo es), no devuelve nada y, a pesar de eso, .then(r => {actualStuff()}) genera lo que se espera ( hello en la consola).

¿Qué recibe then() realmente? (que no return )

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Un .catch encadenado a una Promesa resultará en una Promesa que:

  • se resuelve con el valor devuelto por .catch , si .catch regresa normalmente
  • rechaza con el error, si el .catch mismo arroja un error

Asi que

 const chainedPromise = somePromise.catch(() => { // no errors here // nothing returned })

Si .catch definitivamente no arroja, entonces chainedPromise definitivamente se resolverá (y no rechazará), y dado que no se devuelve nada, chainedPromise se resolverá como undefined .

Asi que

 initialCheck() .then(r => { actualStuff() })

funciona porque initialCheck devuelve una Promesa que resuelve (a undefined ).

Si devolvió algo del .catch y se ingresó el .catch , lo verá en .then encadenado a él más tarde:

 const initialCheck = () => { return fetch('https://doesnotexist') .catch(() => { return 'foo'; }); } const actualStuff = (r) => { console.log(r); console.log('r is foo:', r === 'foo') } initialCheck() .then(r => { actualStuff(r); })

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda