删除警报时Javascript无法正常工作

时间:2015-09-27 21:44:53

标签: javascript d3.js

我使用D3.js并在从csv文件加载数据时,删除alert()语句时页面不呈现。我不是js专家,我知道这与异步操作模式有关,但我不知道该改变什么。

警告时(

非常感谢

安迪

man 7 signal

2 个答案:

答案 0 :(得分:1)

当您调用仪表板时,似乎您的数据未完全加载。它适用于alert,因为在警报打开时,您的脚本会暂停。另一件事是,你在这里使用全局变量。让我们使用回调来避免这种情况。

D3' csv函数使用回调并在数据准备好后调用它。

d3.csv("/xxxxxxxx/templates/uber/js/theclimate.csv", function(climate_statistics) {
  /* ... */
});

您现在可以在回调中调用仪表板功能,或者为您的功能添加回调。让我们在这里做后者:

var climate_csv = function( callback ) {
  d3.csv(
    "/xxxxxxxx/templates/uber/js/theclimate.csv",
    function( climate_statistics ) {

    var climate_data = climate_statistics.map(function( d ) {
      month = d.month;
      low = +d.low;
      high = +d.high;
      rainfall = +d.rainfall;
      sunshine = +d.sunshine;
      nighttime = +d.nighttime;
      return {
        "Month": month,
        "cStats": {
          "low": low,
          "high": high
        },
        "rainfall": rainfall,
        "sun": {
          "Sunshine": sunshine,
          "Nighttime": nighttime
        }
      };
    });

    // we are done with mapping our data
    // let's call the callback with the data
    callback(climate_data);
  });
};

/* ... */

climate_csv(function( climate_data ) {
  dashboard('#dashboard', climate_data, climateStats2, climateStats3,
    climateStats4, climateStats5);
});

答案 1 :(得分:0)

在成功回调中移除警报时放置无效的功能,这将成为诀窍。 .csv工作异步,因此当您发出警报时,请求在后台完成,当您删除它时没有等待时间"添加(应该是)以及它为什么不起作用。

不使用d3.js,但此文档可以提供帮助: https://github.com/mbostock/d3/wiki/CSV

d3.csv("path/to/file.csv")
    .row(function(d) { return {key: d.key, value: +d.value}; })
    .get(function(error, rows) { console.log(rows); });

希望它有所帮助。