Я только недавно попробовал выучить 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)
first
что я ожидал, как выполнить, или вернуть myArray
после того, как весь цикл или другой процесс выполнен?
- проблема в том, как я зацикливаю массив, а не как я сделал обратный вызов, обещание, потому что я уже использую async - await
, который возвращает обещание и его поведение.map
или forEach
не позволяет то, что я ожидал ... и решение ясно: for ( item of items )
спасибо