Uncaught Reference Error: queue is not defined

Uncaught Reference Error: queue is not defined

我遇到了错误

Uncaught Reference Error: queue is not defined

但我不明白为什么会收到错误消息。我正在尝试使用 D3 绘制美国地图,我 am/was 使用此 guide 但它与 D3 的最新版本不完全匹配。这是视频中我的 code/the 代码:

(function (){

var width = 400;
var height = 300;

var svg = d3.select('#d3mapUS')
        .append("svg")
        .attr("width", width)
        .attr("height", height);

var projection = d3.geoAlbersUsa()
        .scale(1280)
        .translate([width/2, height/2]),
    path = d3.geoPath()
        .projection(projection);

var stateIDMap = d3.map({

});

queue()
    .defer(d3.json, "us.json")
    .await(function (err, US) {
        var states = svg.append("g")
                .attr("class", "states")
                .selectAll("g")
                .data(topojson.feature(US, US.objects.states).features)
                .enter()
                .append("g");

        states.append("path")
                .attr("d", path);
    });
})();

队列是图书馆的一部分吗?我假设如果您将它附加到 html 中,它无论如何都会起作用。确保它在您导入代码之前。

但如果它不起作用或者您担心编译器错误,您可以这样做:

(function (queue) {
....

})(queue);

当我想在我的生活中使用 jquery 或 window 时,我会这样做。

如果您使用的是 D3 v4.x,正确的语法是 d3.queue。所以,应该是:

d3.queue()
    .defer(d3.json, "us.json")
    .await(function (err, US) {
        var states = svg.append("g")
            .attr("class", "states")
            .selectAll("g")
            .data(topojson.feature(US, US.objects.states).features)
            .enter()
            .append("g");

        states.append("path")
            .attr("d", path);
});

检查API:https://github.com/d3/d3-queue#queue