我想在foreach的控制台中打印“comments”元素,但是当我在数组中推送一些元素时,这些元素仅在我推送它们的第一个foreach中可见,在“comments”数组之外仍然是空的。我该如何解决这个问题?
url.action
答案 0 :(得分:3)
您正在尝试同步输出结果,该结果仅以异步方式分配:
comments_id.forEach( async id => {
comments.push(await Comment.findById(id));
console.log(comments) // The output are elements which really exist in
// Comment model
});
当上面的代码符合await
时,执行会立即执行下一个forEach
回调,...等等。所有这些回调函数在遇到{{1}时返回(一个承诺) }}。但是没有人会收到评论。所以执行继续执行整个await
块后面的...这是你尝试输出数组的地方,......它仍然是空的。
要使其正常工作,请使用forEach
代替上述代码块:
Promise.all