首页 > 解决方案 > 将对象存储在来自 API javascript 的变量中

问题描述

我正在尝试存储从 API 返回的 JSON 对象。我将对象存储在一个名为 obj 的变量中,但是我无法弄清楚为什么我无法在函数中使用该变量来检索该对象的某些属性。

var obj;

btn_top.addEventListener("click", function () {
  fetch(url)
    .then(res => res.json())
    .then(data => obj = data)
    .then(() => console.log(obj))
  var profit = [];
  console.log("testing");
  console.log(obj);
  Object.values(obj).forEach(e=> {
    var eProfit = e.sell_average;
    profit.push(eProfit);
  });
  console.log(profit);
});

我收到以下错误。

main.js:46 Uncaught TypeError: Cannot convert undefined or null to object

使用时我能够正确返回 obj

.then(() => console.log(obj))

但是在那之后我得到了错误。

谢谢。

标签: javascriptapiurl

解决方案


obj未定义,因为日志记录和forEach循环在 Promise 解决之前obj执行,并被分配为 Promise 调用的结果数据。

当您处理 Promises(即异步代码)时,您需要在then()块中执行所有数据操作。


推荐阅读