【问题标题】:Why the fetch json api appears errors为什么fetch json api会出现错误
【发布时间】:2019-11-18 03:34:47
【问题描述】:

我对 Json 有一些问题。

  1. 当我单击 json 文件时,浏览器或代码编辑器会冻结。
  2. 我创建了三个数组变量,但每次我推送项目时浏览器都会出现......推送不是一个函数或给我错误的答案。

示例如下:

首先让我们假设 json 格式是这样的:

//json file

[[{"id":1,"status":'idle',"runTimeStart":121212,"runTimeFinished":12121212},{"id":2,"status":'idle',"runTimeStart":121212,"runTimeFinished":12121212},{"id":3, "status":'idle',"runTimeStart":121212,"runTimeFinished":12121212}]];
//I create three array

var status = [];
var runtimeStart = [];
var runtimeFinished = [];         


fetch('data.json')
.then(data=> data.json())
.then(res=> allData(res))

//Main function is here 

function allData(lop) {
  var long = lop[0];
  for(var i = 0; i <  long.length; i++) {
   runtimeStart.push(long[i].runTimeStart);
   console.log(long[i].runTimeStart);
   console.log(long[i].status);
   console.log(long[i].runTimeFinished);
   status.push(long[i].status);
   console.log(status);
   runtimeStart.push(long[i].runTimeStart);
   console.log(runtimeStart);
   console.log(runtimeStart);
  }
}

您可以在此文本上看到代码,所以当我退出时,格式如下:console.log(long[i].status)。浏览器会冻结一会,结果还是注销状态。

但是当我做这样的事情时:status.push(long[i].status);控制台.log(状态);它说 push 不是一个函数。

我很困惑为什么结果会出现错误,希望你们能帮助我,非常感谢!

【问题讨论】:

  • 所以,你的问题是:But when i do something like this: status.push(long[i].status); console.log(status); it says push is not a function
  • 我看到你提到的 json 中的数组 long ......这个数组有多大(即 long.length 是什么)
  • 是的,那是我的问题。我只是随机命名的。 json 包含 112 个项目。
  • 尝试为status 使用一个不同的名称 ...或使您的代码不在全局上下文中...因为window.status 已经是一件事了-@987654321 @

标签: javascript json api


【解决方案1】:

在浏览器中应该避免使用一些变量名称

例如,status 在全球范围内可能被window.status“搞砸”了

其他的是nameoriginlengthinnerWidthscreenX 等等 - 事实上,如果你 console.log(window) 并深入了解输出的所有原型链,它们将是避免的名字

两种选择

改变

var status = [];
status.push(....);

var _status = [];
_status.push(....);

或其他一些变化

或者,将该代码放入函数中

function whatever() {
    var status = [];
    ...
    status.push(.....);
}

这也可能解释了“冻结”

【讨论】:

  • 非常感谢。它提高了很多,但是当我注销状态数组的长度时,最初它应该出现112。但是为什么结果是这样的:1 2 3 4 5 6 7 8 9 10 11........等等。直到 112 才会停止。
  • @Michaelwang - 正如您在 JSON 中所说的那样,您有 112 个项目... console.log 在您推送每个项目之后...所以在第一个之后,将输出 1 ,然后是 2 。 ..一直到第112个,console.logs 112 - 我不明白为什么这会让你感到困惑。将 ONE 元素推送到数组后,数组怎么能长 112?
  • 目标变了,这是个新问题。状态推送完全没问题,换个问题就好了,请不要误会
  • 是的,对……但是现在的问题是什么?为什么在推入每个元素后得到数组输出的长度?因为这就是你的代码所做的
  • NO.....我希望 112 长度出现在控制台上。但是控制台出现1、2、3、4、5、6……等等直到112。控制台出现的是系列,而不是单112本身
猜你喜欢
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
相关资源
最近更新 更多