En mi código, intento obtener datos de dos archivos JSON y devolverlos como una matriz. Hice la solución a continuación, pero no funcionó. ¿Qué debo hacer para registrar esos arreglos en la consola y lograr lo que quiero?
TS:
requests = [ 'data/products.json', 'data/categories.json', ]; constructor(private _http: HttpClient) { const x = Promise.all(this.requests.map((url) => fetch(url))).then( async (res) => Promise.all(res.map(async (data) => await data.json())) ); console.log(x); }El resultado de Promise.all es "vacío" (técnicamente una Promise ) porque no se ha resuelto en el momento en que está iniciando sesión. Debe await o capturar el resultado en .then .
Lo reescribiría como const x = await Promise.all(...) fuera de un constructor en un método o iría con Promise.all(...).then(...) .
Estás complicando demasiado el código con todos esos async sin sentido
El problema es que x es una Promesa... una Promesa no resuelta en el momento en que lo consola.
intente lo siguiente en su lugar
requests = [ 'data/products.json', 'data/categories.json', ]; constructor(private _http: HttpClient) { const makeRequest = (url) => fetch(url).then(response => response.json()); Promise.all(this.requests.map(this.makeRequest)) .then(x => console.log(x)); }