Return 运行 forEach 之后的变量

Return Variable After Running forEach

我最近刚尝试学习 nodejs,我选择了 adonisjs 框架,因为我认为它对我来说更容易学习,因为简而言之与我用来编写代码的 laravel 有一些相似之处。

但是现在,我有一些问题,我无法解决,我有这样的功能:

  async getAllPeople() {
    let allPeople = await People.all()
    let myArray = []
    let checkChild = async (people) => {
      let eachPeopleChild = await people.children().fetch()
      if (eachPeopleChild.rows.length > 0) {
        return people
      }
      return false
    }
    allPeople.rows.forEach(async (people) => {
      let res = await checkChild(people)
      if (res !== false) {
        myArray.push(res)
      }
    })
    console.log(myArray)
  }

当我 运行 这个函数时,它显示一个空数组 [],我知道因为 nodejs 或 js 实际上有异步行为,它 运行 这个:console.log(myArray) 第一

我期望的是,如何执行,或者return myArray所有循环或其他过程完成后?

-- 问题出在我循环的路上,数组不在我进行回调的路上,promise,因为我已经在使用 async - await,这是 returning promise 及其行为。 mapforEach 不符合我的预期。解决方案很明确:for ( item of items )

谢谢

实际上,我刚刚找到了解决方案,感谢另一个地方的人告诉我,我不能使用 forEach,而只能使用 for (let item of anArray)。 这是我的代码:

  async getAllPeople() {
    let allPeople = await People.all()
    let myArray = []
    let checkChild = async (people) => {
      let eachPeopleChild = await people.children().fetch()
      if (eachPeopleChild.rows.length > 0) {
        return people
      }
      return false
    }

    for (let people of allPeople.rows) {
      let res = await checkChild(people)
      if (res !== false) {
        myArray.push(res)
      }
    }
    return myArray
  }

现在一切正常..!!