首页 > 解决方案 > 使用 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 中它消失了你能为我解释一下并告诉我如何解决它吗?

标签: node.jsasynchronousforeachasync-await

解决方案


forEach 忽略作为参数传递给它的函数返回的承诺。它将为每个元素调用该函数,该函数将运行直到它产生,并返回一个承诺。因此 forEach 与异步函数完全不兼容。


推荐阅读