Espero que esto no sea un duplicado. Hasta ahora pude encontrar algunos tutoriales y preguntas sobre esto, pero generalmente todos solo quieren registrar los resultados de su código en la consola, lo que no me ayuda.
Quiero obtener algunos datos de una API para trazarlos en un sitio web.
La recuperación parece funcionar bien, porque puedo registrar los resultados dentro de fetch.then() en la consola. Pero (obviamente) no salen de la búsqueda.
La única solución que pude encontrar es envolver todo esto en otra función o escribir una función que funcione con los datos obtenidos dentro de .then().
No pude hacer que la primera idea funcionara, porque no puedo devolver nada por la misma razón que la anterior (los datos no salen del .then()).
El segundo es problemático, porque simplemente quiero trazar los resultados de algunas entradas .json en un gráfico de Plotly. Y, sinceramente, no tengo idea de cómo colocar esto dentro de una función .
// Arrays for results var sugars = []; var times = []; // fetch the BG data from the API and write results into arrays fetch(url) .then((resp) => {return resp.json()}) .then( (result) => { // read glucose values from json // logging the results/sugars/times to console from here works! for (let i = 0; i < n_entries; i++) {sugars[i] = result[i]["sgv"]} for (let i = 0; i < n_entries; i++) {times[i] = -i * timestep} }); var x1; var y1; /* // Dummy data to test plotly, these WORK for some reason. x1 = [0, -5, -10, -15, -20]; y1 = [123, 119, 113, 107, 102]; */ // These values, however, don't work: /* x1 = times; y1 = sugars; // this yields 'undefined' errors: console.log(times) */
Tal vez pueda intentar separar su búsqueda y devolver los datos a una función en la que use los datos para hacer lo que quiera. Puedes probar algo como esto: creo que es lo mismo que comentaron otras personas.
//make the fetch and return response data as json async function getData() { let url = 'your url'; try { let resp = await fetch(url); return await resp.json(); } catch (error) { console.log(error); } } //do whatever you want with the data response async function myFunc() { let data = await getData(); //do some stuff with your data here } //call the function myFunc();
Echa un vistazo a este enlace si te quedas atascado.