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

165
Vistas
Promesa, objeto literal, API Java Script

Ok, creo que estoy haciendo mal la promesa. tengo 2 problemas:

  • Los resultados dentro de la clase no funcionan. pero cuando lo recupero en app.js, se muestra como una promesa.

  • Los resultados dentro de las aulas deberían ser más de una fila/objeto pero solo me da un resultado

Puedo obtener el resultado que quiero dentro de la clase, pero en la siguiente app.js obtengo esto cuando intento recuperar los valores de los resultados: Promise {}

 let results document.getElementById('crypto').addEventListener('keyup', (e) => { const cryptoInput = e.target.value; console.log(cryptoInput); if (cryptoInput.length > 2) { results = crypto.getPrice(currency, cryptoInput) //here I get Promise {<pending>} console.log(results) } }) const table = document.getElementById('resultsTable'); let i = 0; function showOptions(results) { console.log(results) }

la clase está funcionando:

 class CoinGecko { constructor() { } async list() { const list1 = await fetch(`https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=1&sparkline=false`); const list2 = await fetch(`https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=2&sparkline=false`); const list1Json = await list1.json(); const list2Json = await list2.json(); const list = Object.assign(list1Json, list2Json); //const list = list1Json.concat(list2Json); return list; //console.log(list); } async getPrice(currency = 'usd', crypto) { let results=[]; const toutCrypto = await this.list().then(res => { Object.keys(res).forEach(function (element){ if (res[element].id.startsWith(crypto) || res[element].name.startsWith(crypto) || res[element].symbol.startsWith(crypto)) { //console.log(); results.push({ id: res[element].id, name: res[element].name, image: res[element].image, symbol: res[element].symbol, price: res[element].current_price, date: res[element].last_updated, }) console.log(results[0]) } }); }); console.log(results[0].id) return { results } } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

lo siento por la respuesta tardía, agregue espera a su función asíncrona

 results = await crypto.getPrice(currency, cryptoInput)

está utilizando una función asíncrona pero no está esperando la respuesta, es por eso que obtiene la promesa como resultado

Probé el código, aquí hay un resultado de ejemplo: ingrese la descripción de la imagen aquí

editar: como dice Phil , debe hacer que su detector de eventos sea asíncrono

 document.getElementById("crypto").addEventListener("keyup", async (e) => {
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