Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda