javascript - 将对象存储在来自 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))
但是在那之后我得到了错误。
谢谢。
解决方案
obj
未定义,因为日志记录和forEach
循环在 Promise 解决之前obj
执行,并被分配为 Promise 调用的结果数据。
当您处理 Promises(即异步代码)时,您需要在then()
块中执行所有数据操作。
推荐阅读
- apache-spark - Pyspark - from_unixtime 未显示正确的日期时间
- vuejs2 - FontAwesome Regular Vuetify
- sql-server - Docker 上的 MSSQL 立即退出
- python - multiprocessing.cpu_count 和 os.cpu_count 的区别
- java - 删除使用 GSON 创建的 JSON 字符串中的双引号
- javascript - 使用three.js的视差效果
- performance - 快速比较列表与自身
- python - 熊猫:将nan连续转换为空数组
- c# - 这是使用 EAV 还是不使用的好案例
- javascript - AutoNumeric - 在 Ajax 调用后设置一个值