node.js - 使用 foreach nodejs 时 async/await 的结果
问题描述
这是我的代码
const listShift = await Shift.find().and([{ "shiftInstance.workers.worker": req.user }, { "shiftInstance.date": Date.parse(date) }]).select("name startTime endTime -_id target").populate("target target.checkPoints.checkPoint")
//Find checkpoint
listShift.forEach(async shift =>{
listShift.target = await Target.findById(shift.target).populate("checkPoints.checkPoint")
console.log(listShift); //1
})
console.log(listShift); //2
在 1 中我有 await Target 的结果......但在 2 中它消失了你能为我解释一下并告诉我如何解决它吗?
解决方案
forEach 忽略作为参数传递给它的函数返回的承诺。它将为每个元素调用该函数,该函数将运行直到它产生,并返回一个承诺。因此 forEach 与异步函数完全不兼容。
推荐阅读
- java - 为了进行集成测试,如何启动 Spring Boot 应用程序
- r - 在 R 中识别旅行的开始和结束
- java - 使用多态性从 JSON 生成对象
- c++ - 使用 std::async 并将向量中的参数传递给函数并收集结果
- javascript - 使用没有开关的案例 - 这是如何工作的?
- java - Collections.sort that accept multiple parameters
- c# - Automapper 非常简单的嵌套映射不起作用
- bazel - How to get execution time of each test in bazel?
- c++ - 重新分配指针如何影响多态性
- python - Formatting numpy arrays with black