我正在尝试存储从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))
但是之后我得到了错误。
谢谢。
答案 0 :(得分:0)
obj
是未定义的,因为在解决Promise之前已执行日志记录和forEach
循环,并且将obj
分配为Promise的结果数据打电话。
在处理Promises(即异步代码)时,您需要在then()
块中执行所有数据操作。
答案 1 :(得分:0)
您该怎么做! 提取是异步的,请阅读文档!
之后的下一行
.then(()=> console.log(obj))
在提取结束时未运行,但在此之前。
您的“下一个”代码必须位于最后一个Fetch回调中:
fetch(url)
.then(res => res.json())
.then(jsonData=> {
let profit = [];
Object.values(jsonData).forEach(e=> {
var eProfit = e.sell_average;
profit.push(eProfit);
});
});
答案 2 :(得分:-1)