首页 > 解决方案 > 将旧geo适配到D3 v5,如何表达一个Promise的队列?

问题描述

我正在使旧版本的 D3 地图可视化适应现代 D3v5:第一步,到 D3v4,正在使用此源运行,但到最后一步,我需要从旧队列转换 Promise,

d3.queue().defer(d3.json,"file.json").(ready);

到现代v5风格...如何用v5风格表达?
似乎这是

var brMap = d3.json("file.json");
Promise.all([brMap]).then(ready)    

但不工作。


PS:哪里有v5的简单例子?

标签: d3.jsgeo

解决方案


感谢@GerardoFurtado 和@altocumulus,答案就在他的评论上,这里将所有内容合并。


有一些全局变量(也许不是最佳实践)

var g;

在“页面加载后”上下文中运行

svg = d3.select("etc..")
g = svg.append("g")
// ...
d3.json("file.json").then(ready);

函数在ready()哪里

function ready(shp) {
  var data1 = topojson.feature(shp, shp.item1);
  //... draw map appenging features to global g
}

在此处查看解决方案的最终结果。


推荐阅读