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

183
Vistas
¿Cómo dibujar un gráfico con highcharts.js una vez que recuperé todos los datos de la base de datos de firebase?

Obtengo datos de mi base de datos de Firebase cada diez segundos. Quiero trazar un gráfico con highcharts.js, pero cuando accedo a la página web, obtengo todos los datos antes del momento en que se carga la página. En este punto, mi página web se congela y falla después de unos minutos mientras se recuperan los datos. (También tengo una segunda pieza de código que recupera los nuevos datos cada vez que se agregan a la base de datos, pero la página web falla antes).

Creo que es mi función plotvalue la que bloquea la página. Cuando suprimo plotValue (...) puedo leer mis datos en unos segundos, incluso si hay más de 15k. De hecho, puede deberse a que vuelvo a dibujar el gráfico cada vez que recibo datos en lugar de esperar a recuperarlos todos.

Me gustaría saber cómo dibujar el gráfico una vez que todos mis datos se recuperen de mi base de datos.

Les agradezco de antemano sus respuestas.

Aquí está el código:

 setInterval(test, 10000); function test() { if (it === 0) { console.log("it=", it); dbRef.orderByKey().once('value', snapshot => { //"value" to have all existing data var jsonData = snapshot.toJSON(); //console.log(jsonData); // Test purpose var coco = Object.values(jsonData); //Extract the numerical values of the object // Save values on variables //console.log(Défaut_communication_automate); //Test purpose coco.forEach(elt => { //Choose in coco for each element var Puissance_batterie = elt.Puissance_batterie; //Choose all the values of the element named "Puissance_batterie" var Puissance_AC_Onduleurs = elt.Puissance_AC_Onduleurs; var Tension_réseau = elt.Tension_réseau; var timestamp = elt.timestamp; //console.log(Puissance_batterie); plotValues(chartALM, timestamp, Puissance_batterie, 0); plotValues(chartALM, timestamp, Puissance_AC_Onduleurs, 1); plotValues(chartALM, timestamp, Tension_réseau, 2); }) ++it; console.log("it=", it); }) } //function to plot values on charts function plotValues(chart, timestamp, value, series) { var x = epochToJsDate(timestamp).getTime(); var y = Number(value); chart.series[series].addPoint([x, y], false, false); chart.redraw(); } // Create the charts when the web page loads window.addEventListener('load', onload); function onload(event) { chartALM = createALMChart(); barALM = createALMBar(); } // Create Chart function createALMChart() { var chart = new Highcharts.Chart({ chart: { renderTo: 'chart-ALM', type: 'spline' } //The following is only about the visual aspect }
about 4 years ago · Juan Pablo Isaza
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