Usamos Google Charts en nuestra aplicación para generar gráficos de anillos. Un usuario informó que se muestran errores de Javascript en lugar del gráfico, y he estado tratando de simular esto. Lo más cerca que puedo estar es acelerar la velocidad de la red en el navegador a una conexión muy lenta (por ejemplo, GPRS en Firefox o 20 kbps en Chrome). Causa que sucedan algunas cosas inusuales que no esperaba.
Usando el ejemplo de código de gráfico de anillos de Google (palabra literal, para demostrar que las devoluciones de llamada están configuradas) con una conexión limitada ( violín aquí para mayor comodidad):
Firefox nunca muestra los gráficos. El método de devolución de llamada nunca se invoca. Es como si el navegador "olvidara" la devolución de llamada, o la devolución de llamada tuviera una propiedad de tiempo de espera:
Chrome no muestra el gráfico y muestra errores relacionados con arrayToDataTable de forma intermitente . Busqué extensamente estos errores, y todas las soluciones parecen estar relacionadas con la devolución de llamada que no se usa correctamente (por ejemplo, renderizar sin esperar a que se cargue el script). Es como si Chrome dejara de esperar y ejecutara la devolución de llamada de todos modos, o simplemente abortara el flujo lógico.
setOnLoadCallback puede agotar el tiempo de espera o cancelar, o las devoluciones de llamada en general?tal vez intente usar la promesa que devuelve la declaración de carga, en lugar de la devolución de llamada.
por ejemplo, aquí hay una declaración típica, usando la devolución de llamada...
google.charts.load('current', { packages: ['corechart'] }); google.charts.setOnLoadCallback(drawChart);en su lugar, intenta usar la promesa...
google.charts.load('current', { packages: ['corechart'] }).then(drawChart); // <-- load statement returns a promise