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

126
Vistas
¿Cómo resolver o rechazar una promesa a partir del resultado de otra promesa?

Realmente lo siento si esto ha sido respondido, he buscado en todas partes y no puedo encontrar el problema exacto al que me enfrento.

Toma esto como ejemplo:

 const fetchData = (email, password) => new Promise(async (resolve, reject) => { await axios.post('https://api.something.com', { email: email, password: password, }, { headers: { 'Content-Type': 'application/json', } }) .then(res => { cookie = res.headers['set-cookie']; }) .catch(err => { return reject('Login failed'); }); await axios.get('https://api.something.com', { headers: { 'cookie': cookie } }) .then(res => { data = res; }) .catch(err => { return reject('Failed to retrieve something'); }); return resolve(data); });

Si las credenciales de inicio de sesión son incorrectas, se envía el mensaje de rechazo "Inicio de sesión fallido", pero el script seguirá ejecutándose y habrá un mensaje de error adicional que indicará que la cookie no está configurada. Quiero detener por completo el guión en la primera captura.

Podría usar throw new Error('Login failed') y eso detendría el script por completo, pero no siento que esa sea la respuesta correcta y también porque me hace preguntarme qué más podría usar para resolver la promesa (para otros propósitos ) y todavía no dejes que el script continúe ejecutándose.

Tampoco estoy interesado en las funciones de anidamiento, para evitar el infierno de árbol de navidad de promesa de devolución de llamada.

¿Estoy teniendo sentido?

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

0

Debido a que usa async/await, no necesita crear una nueva Promesa y, en lugar de then/catch, use await y try/catch;

 const fetchData = async (email, password) => { let cookie; try { const res = await axios.post( "https://api.something.com", { email, password }, { headers: { "Content-Type": "application/json", }, } ); cookie = res.headers["set-cookie"]; } catch (err) { throw new Error("Login failed"); } let data; try { const res = await axios.get("https://api.something.com", { headers: { cookie }, }); data = res; } catch (err) { throw new Error("Failed to retrieve something"); } return data; };

Si desea utilizar Promise API en lugar de async/await, puede cambiar las promesas: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises#chaining

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