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 及其行为。 map
或 forEach
不符合我的预期。解决方案很明确: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
}
现在一切正常..!!
我最近刚尝试学习 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 及其行为。 map
或 forEach
不符合我的预期。解决方案很明确: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
}
现在一切正常..!!