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

194
Vistas
Prometer mi función https.get() está devolviendo Promise { <pending> }

Estoy tratando de prometer una función que usa https.get() para obtener datos de una API, de modo que pueda usar async await. Aquí está el ejemplo a continuación, recupera los datos; sin embargo, si hago algo para acceder al objeto, como los theData[0] que se muestran a continuación, solo devolverá Promise { <pending> }

¿Por qué no puedo obtener la operación asincrónica que intento a continuación? ¿O hay una mejor manera de hacer esto? Básicamente, solo estoy tratando de realizar una operación asíncrona con async await, y necesito usar https (no fetch, axios, etc.).

 const myRequest = ((url) => { return new Promise((resolve, reject) => { https.get(url, res => { let data = []; res.on('data', chunk => { data.push(chunk); }); res.on('end', () => { resolve(JSON.parse(data)); }); }).on('error', err => { console.log('Error: ', err.message); }); }); }); async function getApi() { // write your code here let url = [url redacted] await myRequest(url) .then(data => { console.log(data[0]) }) .catch(err => { console.log(err) }); }

Editar: refactoricé mi función auxiliar con el controlador de errores:

 }).on('error', err => { reject(err) });

Sin embargo, la promesa aún no se está cumpliendo correctamente. Si hago un simple console.log de los datos

 async function getApi() { let url = [url redacted] const data = await myRequest(url); console.log(data) }

Devolverá Promise { <pending> } y luego el JSON:

 Promise { <pending> } { page: 1, per_page: 500, total: 1, total_pages: 1, data: [ { date: '5-January-2000', open: 5265.09, high: 5464.35, low: 5184.48, close: 5357 } ] }

Puedo acceder a ese objeto en console.log, sin embargo, si trato de acceder a algo en este objeto, simplemente devuelve Promise { <pending> } . Como :

 async function getApi() { let url = [url redacted]; const data = await myRequest(url) const {high, open} = data.data[0]; return `High: ${high} \n Open: ${open}` }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Primero, también debe manejar el rechazo, o un error provocará un bloqueo. Agregue reject(err) a su controlador de errores para que el error aparezca correctamente.

Una vez que esté seguro de que el problema no es un error, el uso de espera debe funcionar. await es una herramienta que acepta una promesa y luego espera hasta que se resuelve para ejecutarse sincrónicamente. Si then esperas una promesa, no obtienes nada de tu espera.

Reescriba la función getApi como:

 async function getApi() { let url = [url redacted] const data = await myRequest(url); console.log(data); }

Eso obtendrá y registrará los datos, y si la promesa se rechaza correctamente, aparecerá como una excepción.

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