gpt4 book ai didi

javascript - loadData() 返回空数组

转载 作者:行者123 更新时间:2023-12-02 22:20:44 24 4
gpt4 key购买 nike

我试图将对象数组返回给函数,并查看调试器,它看起来只是返回一个空数组。

这是我希望使用的功能:

// load from json file
loadData(filepath) {
let rooms = [];

fetch(filepath)
.then(
res => res.json()
)
.then(function (data) {
// console.log(data);
for (let i = 0; i < data.rooms.length; i++) {
rooms.push(data.rooms[i]);
}
});
return rooms;
}

我进入调试器,看到 data.rooms 中的房间被推送到我的本地房间对象,但是当我回到应该使用此房间数据的 init() 函数时:

let rooms = this.loadData(this.datapath); // TODO: make games load from json data

for (let i = 0; i < rooms.length; i++) {
this.addRoom(rooms[i].name, rooms[i].getText, rooms[i].prompts, rooms[i].requirements);
}

看起来它传递了一个空数组。是否存在范围问题或我遗漏了什么?我对 fetch/promises/JSON 不太有经验。

很高兴提供任何可能有用的进一步信息。谢谢!

最佳答案

问题是您的本地变量房间将在异步获取完成之前返回。

您可以简单地等待 fetch 语句并使函数异步:

async loadData(filepath) {
let rooms = [];

const response = await fetch(filepath);
const data = await response.json();

console.log(data);

for (let i = 0; i < data.rooms.length; i++) {
rooms.push(data.rooms[i]);
}
return rooms;
}

let rooms = await this.loadData(this.datapath);

关于javascript - loadData() 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59239308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com