未捕获的引用错误:未定义队列

Uncaught Reference Error: queue is not defined

本文关键字:未定义 队列 错误 引用      更新时间:2023-09-26

我得到错误

未捕获的引用错误:队列未定义

,但我不明白为什么我得到错误。我正在尝试使用D3绘制美国地图,我正在使用这个指南,但它与最现代的D3版本并不完全匹配。这是我的代码/视频中的代码:

(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);
    });
})();

如果您使用的是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

队列是库的一部分吗?我假设如果你在html中附加它,无论如何它都会工作。请确保在导入代码之前设置。

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

(function (queue) {
....
})(queue);

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