Estoy tratando de mapear algunos elementos que me devuelve una API usando una clase y un constructor con javascript.
Mi pregunta es qué estoy haciendo mal, ya que el registro antes del mapeo "Resultado antes del mapa" cierra la sesión de mi matriz de elementos. Pero después de mi mapa no obtengo nada y todo en mi constructor no está definido.
class Test { constructor(obj) { this.testValue = obj.testValue } } async function getItems() { const promises = [] const response = (await fetch(url)).json() promises.push(response) const result = await Promise.all(promises) console.log('Result before Map:', result) const tests = result.map(test => new Test(test)) console.log('Result after Map:', tests) }Tienes demasiadas "esperas" ahí.
async function getItems() { const promises = [] promises.push(fetch(url)); const result = await Promise.all(promises) .map((r) => r.json()); console.log('Result before Map:', result) const tests = result.map((t) => new Test(t)) console.log('Result after Map:', tests) }La pregunta es de dónde viene "url". Actualmente no hay ninguna referencia a la url e incluso si es solo una url. Tal vez estés buscando algo como:
async function getItems(urls) { const promises = urls.map((u) => fetch(u)); const result = await Promise.all(promises) .map((r) => r.json()); console.log('Result before Map:', result) const tests = result.map((t) => new Test(t)) console.log('Result after Map:', tests) }Con una sola URL, solo sería
async function getItem(url) { const result = await fetch(url); const resJSON = result.json() console.log('Result before Map:', resJSON) const test = new Test(resJSON); console.log('Result after Map:', test) }