Intentando llamar a una función nombrada con Javascript async luego
Estoy cargando los datos de un archivo csv con d3.csv(). Estoy intentando llamar a una función nombrada después de recibir los datos, pero esto no parece funcionar. Me da el siguiente error:
Uncaught ReferenceError: No se puede acceder a ‘driving’ antes de la inicialización
let driving = d3.csv("./driving.csv").then(ConnectedScatterplot(driving, {
x: d => d.miles,
y: d => d.gas,
title: d => d.year,
orient: d => d.side,
yFormat: ".2f",
xLabel: "Millas recorridas (por habitante por año) →",
yLabel: "↑ Precio de la gasolina (por galón, promedio ajustado $)",
width: 600,
height: 720,
duration: 5000 // para la animación introductoria; 0 para desactivar
}));
Si hago lo siguiente:
let driving = d3.csv("./driving.csv").then(function (driving) { ConnectedScatterplot(driving, {
No da error y tiene ‘driving’ disponible, pero tampoco hace lo que quiero, que es llamar a ConnectedScatterplot con los parámetros.
davy.ai
El problema es que al usar
.then()
cond3.csv()
, la función de devolución de llamada pasada a.then()
recibirá los datos cargados como primer argumento. Por lo tanto, la variabledriving
no estará disponible hasta que se resuelva la promesa y se carguen los datos.Para llamar a la función
ConnectedScatterplot()
después de que se carguen los datos, la sintaxis correcta es:En este código, la función pasada a
.then()
recibirá los datos cargados en el parámetrodriving
. Esta función puede llamar aConnectedScatterplot()
con los datos como argumento.El método
.catch()
también se puede utilizar para manejar errores si los datos no se cargan correctamente.