Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在D3V5中从CSV文件加载数据_Javascript_D3.js - Fatal编程技术网

Javascript 如何在D3V5中从CSV文件加载数据

Javascript 如何在D3V5中从CSV文件加载数据,javascript,d3.js,Javascript,D3.js,我试图从D3中的CSV文件加载数据;我有以下代码: function update (error, data) { if (error !== null) { alert ("Couldn't load the dataset!"); } else { //do something }; function changeData () { d3.csv ("data/dataset.csv", update); } 如果我使用D3

我试图从D3中的CSV文件加载数据;我有以下代码:

function update (error, data) {
    if (error !== null) {
        alert ("Couldn't load the dataset!");
    } else {
        //do something
    };

function changeData () {
    d3.csv ("data/dataset.csv", update);
}
如果我使用D3V4,它工作得很好,但如果我切换到v5,它就不再工作了。 有人能给我解释一下如何修改代码以使其与D3V5一起工作吗?

使用fetch API并返回一个需要以下代码的承诺

d3.csv('yourcsv.csv')
  .then(function(data) {
      // data is now whole data set
      // draw chart in here!
  })
  .catch(function(error){
     // handle error   
  })
以防将来人们想要v4。另一方面,使用XMLHttpRequest方法,并且不返回需要此代码的承诺

d3.csv('yourcsv.csv', function(data) {
    //whole data set
    // draw chart here
})
csv加载是异步的,因此请确保在csv函数中运行图表代码

很好,但是如果您想使用ES7/而不是Promise,那么:

async function doThings() {
  const data = await d3.csv('yourcsv.csv');
  // do whatever with data here
}

doThings();

我可以为你指出正确的方向。它周围的API发生了轻微的变化,现在它返回了一个承诺。请查看@pmkro,我无法将此作为重复关闭,因为此问题显然不是您链接的问题的重复。最重要的是,你的答案是错误的(关于OP的问题),你甚至可以看到一个反对票。因此,请随意复制该答案(不带堆栈片段,堆栈片段仅用于运行代码)并删除该答案,因为它是错误的。@GerardoFurtado yes,根据更合适的问题重新存储答案。删除了依赖于版本的答案。保留版本4代码,以供以后找到它的人使用。@Bananasaurus如果响应不正常,即HTTP状态不是200-299,则返回的承诺将被拒绝。您可以使用来处理这些错误。D3不会报告任何其他错误,也不会让您访问
响应
对象。这已作为一个问题提出,但被Mike Bostock拒绝,他鼓励在需要进一步错误处理时使用Fetch API。我得到一个
引用错误:Fetch未定义
@Zee您使用的浏览器是哪种?这应该适用于所有现代浏览器。您可能需要polyfill来支持IE版本。我可以与它同步吗?有完整的例子吗?1他们做2吗<代码>doThings1();doThings2()