let pages = {}
let commandSections = await fs.readdirSync("./commands")
let pageNum = 1
await commandSections.forEach(async e => {
let sectionCommands = await fs.readdirSync(`./commands/${e}`)
let pageInfo = ''
await sectionCommands.forEach(async element => {
let desc = await client.commands.get(element.split(".")[0]).description
pageInfo += `${element.split(".")[0]} - ${desc}\n`
})
pages[pageNum] = {"name": e, "value": pageInfo}
pageNum++
})
^^我的代码在那儿,如您所见,我将页面定义为字典。然后,我继续进行一些forEach循环(以遍历discord bot的命令),从而将键/值对添加到字典中。问题是,每当我尝试访问字典时,它都会作为一个空字典({})返回。当我在forEach循环中console.log“ pages”时,它作为正确的东西返回。有什么想法吗?
答案 0 :(得分:0)
首先,您无需将await
与fs.readdirSync
一起使用,因为此方法不是异步的。
You can't find docs for this method here
可能是这里的问题是forEach
函数没有等待异步回调。
它只是调用您通过的回调。
如果需要在数组迭代中使用异步操作,则最好使用for loop。它与异步代码完美配合。