Para cargar un archivo TopoJson en D3 (estoy usando la versión 7), es tan simple como:
d3.json("file01.json").then(function(topology) {Para cargar dos archivos en versiones anteriores, podría usar, por ejemplo, en la versión 6:
Promise.all([ d3.json("file01.json"), d3.json("file02.json", function(d) { data.set(d.code, +d.pop) }) ]).then(function(loadData){y en la versión 4, por ejemplo:
d3.queue() .defer(d3.json, "file01.json") .defer(d3.json, "file02.json", function(d) { data.set(d.code, +d.pop); }) .await(ready);Probé ambas en la versión 7 y recibí el aviso de que la promesa o la cola no son una función. Entonces interpreté que en la versión 7 hay otra forma de cargar dos archivos externos.
Gracias por cualquier ayuda que no pude encontrar hasta ahora, a pesar de buscar en Internet. Hay mucho material sobre la versión 3 a la 6, pero mucho menos sobre la versión 7.
d3.json en d3 v7 devuelve una promesa, por lo que lo que escribió es casi correcto. Solo que el segundo argumento no es para manipular datos (sino para pasar opciones adicionales a la llamada de búsqueda: vea la API fetch() ). d3.json usa la API fetch() incorporada del navegador.
Para manipular datos, deberá hacerlo en la función de devolución de llamada.
Promise.all([ d3.json('file01.json'), d3.json('file02.json') ]).then(function([data01, data02]){ // manipulate data here // data01 // data02 })Vea el ejemplo de trabajo en este codepen Verifique la consola para ver los datos que se registran después de obtenerlos.