Код выполняется асинхронно
Есть кусок кода:
let news = [];
docs_id.forEach(async el => {
const news_ = await News.find({ _id: el._id });
news.push(news_);
console.log(news.length)
});
console.log(news.length)
console.log('---------------');
Здесь переменная docs_id равна массиву подобного вида:
[
{ _id: 5ff470ba061b231930bc4717 },
{ _id: 5ff470d0061b231930bc4718 }
]
Почему-то при выполнении кода в консоль выводится:
0
---------------
1
2
То-есть .forEach выполняется асинхронно.
Как это можно исправить?
Ответы (1 шт):
Автор решения: entithat
→ Ссылка
У Вас forEach просто выполняет асинхронную функцию, которая даст результат только через некоторое время. Но два следующих console.log'a выполнятся сразу. Пример очень похож на Ваш.
(async() => {
let news = [];
for (const el of docs_id) {
const news_ = await News.find({
_id: el._id
});
news.push(news_);
console.log(news.length);
}
console.log(news.length);
console.log('---------------');
})();