【发布时间】:2019-06-27 15:23:11
【问题描述】:
我正在跟随 Adam Janes 的合唱团tutorial。
使用此代码块加载数据
var promises = [
d3.json("https://d3js.org/us-10m.v1.json"),
d3.tsv("unemployment.tsv", function(d) { unemployment.set(d.id, +d.rate); })
]
Promise.all(promises).then(ready)
而准备好被定义为
function ready([us]) {
svg.append("g")
.attr("class", "counties")
.selectAll("path")
.data(topojson.feature(us, us.objects.counties).features)
.enter().append("path")
.attr("fill", function(d) { return color(d.rate = unemployment.get(d.id)); })
.attr("d", path)
.append("title")
.text(function(d) { return d.rate + "%"; });
svg.append("path")
.datum(topojson.mesh(us, us.objects.states, function(a, b) { return a !== b; }))
.attr("class", "states")
.attr("d", path);
}
我将这个序列理解为
首先 - 创建一个名为 promises 的数组,其中第一项是来自 link 的解析 json,第二项是来自失业文件的 id/value 对的映射
second - 获取 promise 变量中的所有 promise,如果成功,则触发函数准备就绪,如果失败,则不执行任何操作
如果这是正确的,那么与这样的东西相比有什么优势?我是用伪代码写的,因为我是新手
var promises = [
d3.json("https://d3js.org/us-10m.v1.json"),
d3.tsv("unemployment.tsv", function(d) { unemployment.set(d.id, +d.rate); })
]
if(promises == 'SUCCESS'){ function(ready) };
请注意,由于 javascript 是单线程的,因此我阅读了有关 Promise 及其优势的信息。我问这个问题是因为它不会让我感到任何异步正在发生,代码必须在这两种情况下加载 promises 数组。
【问题讨论】:
标签: javascript