【问题标题】:d3.csv promise pending and getting its datad3.csv 承诺待处理并获取其数据
【发布时间】:2018-11-21 08:37:43
【问题描述】:

这是我第一次询问 StackOverflow - 我是 D3 的新手,并且为此使用了 v5

我已经搜索了好几天,找不到任何东西。如果有一个现有的,请直接帮助我得到一个确切的答案。非常感谢您的帮助!


intro:刚刚得到了一个示例数据供使用:

Wafer,N Rows,Product Yield,Endline Yield,Mid_Yield
7G650,10,91.18%,99.70%,94.27%
7G651,10,88.41%,98.11%,95.54%
7G652,10,92.08%,97.56%,98.58%
7G657,10,87.71%,97.76%,95.77%

首先,我的代码如下:

<script src="https://d3js.org/d3.v5.min.js"></script>
<script type="text/javascript">
   $(document).ready(function() {
      var yield = d3.csv("http://server/trend/data.csv",
                       function(data, i) {
                          return {
                             waf : data.Wafer,
                             seq : i,
                           yield : +data["Product Yield"].replace(/%/g, "")
                       };
      });
      console.log(yield);
   });
</script>

当我在控制台 (chrome) 上检查时 - 我可以看到我的数据。只是它需要一个promise实现

所以我搜索了一些解决方案,现在这是我的代码:

var yield = d3.csv("http://server/trend/data.csv",
                function(data, i) {
                    return {
                         waf : data.Wafer,
                         seq : i,
                       yield : +data["Product Yield"].replace(/%/g, "")
                    };
                 }).then(function(data){
                       console.log(data);
             });

我仍然可以从 console.log(data) 中看到我过滤的数据,

但是当我使用“yield”变量从 d3.csv 外部查询时

console.log(yield);

值现在未定义

很抱歉,我的老板要杀了我。我将需要这些过滤数据来判断我的趋势,并且很快会添加一个帕累托图。提前感谢stackoverflow 和更多功能-

【问题讨论】:

  • 您不能将yield 用作变量或属性名称——它是keyword。
  • 感谢@Thilina Nakkawita 将我的图片直接包含在我的问题中 :)
  • 感谢@altocumulus 提供此信息...我从来不知道yield 是它的关键字之一-

标签: javascript d3.js


【解决方案1】:

编辑:关注@altocumulus 的评论

我相信你可能会追求:

var resultYield;

d3.csv("http://server/trend/data.csv",
  function(data, i) {
    return {
      waf : data.Wafer,
      seq : i,
      yield : +data["Product Yield"].replace(/%/g, "")
    };
  }).then(function(data){
    resultYield = data;
    console.log(resultYield);
  })

re: 使用 yield / return 作为对象字面量的键:

const test = {
  yield: 'yield',
  return : 'return'
}

const getTest = () => ({
  yield: 'getYield',
  return: 'getReturn'
})

const getTest2 = function(){
  return {
    yield: 'getYield2',
    return: 'getReturn2'
  }
}

console.log(test, getTest(), getTest2())

【讨论】:

  • 对象字面量中仍然有一个yield。
  • 作为键?我没觉得有什么问题吗?
  • 好点。从来没有想过这一点,因为我通常认为使用关键字作为标识符是一个坏主意。相关:mathiasbynens.be/notes/javascript-properties、"Rules for unquoted JavaScript Object Literal Keys?"。
  • `ECMAScript 3 不允许使用不带引号的保留字作为属性名称。`我明白你的意思。
  • 嗨@pandamakes,感谢您的回答,我尝试了您的代码并更改了所有 yield 关键字,除了 csv-col-title var resultYield; d3.csv("http://localhost:5001/data.csv", function(data, i) { return { waf : data.Wafer, seq : i, yld : +data["SDPT Yield"].replace(/%/g, "") }; }).then(function(data){ resultYield = data; console.log(resultYield); }); resultYield 在 d3.csv 内工作,但在外面仍然没有 - 我需要获取此类数据---resultYield = [{ waf: "7G650", seq: 1, yld: 94.27 }]
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多