在forEach循环javascript中将元素添加到字典中

时间:2020-09-24 17:56:44

标签: javascript node.js discord.js

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”时,它作为正确的东西返回。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先,您无需将awaitfs.readdirSync一起使用,因为此方法不是异步的。

You can't find docs for this method here

可能是这里的问题是forEach函数没有等待异步回调。
它只是调用您通过的回调。
如果需要在数组迭代中使用异步操作,则最好使用for loop。它与异步代码完美配合。