我正在开发一个数据可视化,我需要从我的文件系统加载多个JSON文件,并从Web服务中获取另一个JSON文件。我目前正在使用顺序方法(json文件正在加载d3.js):
d3.json('Cata_provincias.geojson', function(contents){
provincias_json = contents
d3.json('Cata_girona.geojson', function(contents_girona){
girona_json = contents_girona
d3.json('Cata_barcelona.geojson', function(contents_barcelona){
barcelona_json = contents_barcelona
d3.json('Cata_tarragona.geojson', function(contents_tarragona){
tarragona_json = contents_tarragona
d3.json('Cata_lleida.geojson', function(contents_lleida){
lleida_json = contents_lleida
init()
})
})
})
})
})
我的问题是,如果我同时获取所有文件,我会获得更好的加载时间吗?这是最好的方法吗?
编辑:我知道如何同时加载。我想知道的是它是否能加快初始负荷,而且这是一个很好的做法。
答案 0 :(得分:2)
您可以按顺序调用所有json函数,并让每个回调触发init函数。然后,init函数必须计算已经进行了多少次调用,并且只有在计数达到正确值时,才进行实际的初始化。
d3.json('Cata_provincias.geojson', function(contents){
provincias_json = contents
init()
})
d3.json('Cata_girona.geojson', function(contents_girona){
girona_json = contents_girona
init()
})
d3.json('Cata_barcelona.geojson', function(contents_barcelona){
barcelona_json = contents_barcelona
init()
})
d3.json('Cata_tarragona.geojson', function(contents_tarragona){
tarragona_json = contents_tarragona
init()
})
d3.json('Cata_lleida.geojson', function(contents_lleida){
lleida_json = contents_lleida
init()
})
var count = 0
function init() {
if(++count < 5)
return
// Do actual initialization here
}