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 } } }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: 
editar: como dice Phil , debe hacer que su detector de eventos sea asíncrono
document.getElementById("crypto").addEventListener("keyup", async (e) => {