【发布时间】:2018-09-26 16:55:47
【问题描述】:
我需要你的帮助来解决一个“简单”的问题,但这个承诺对我来说又是一个错误......
这不是我的代码示例。
// In a middleware, i have a mongoose request
Request
.find({ user: req.user.email })
.then(function (allDatasets) {
allDatasets.forEach(function (oneDataset) {
if (oneDataset.use_case == reqParams.use_case) {
res.status(400).json({
'msg': 'My response'
})
}
})
})
// And my code continue...
如果条件为真,我希望节点返回此响应并停止代码!但是..节点是异步的,当我的循环运行时,下面的代码会被执行。
我试图把下面的代码放在一个.then()中但是它并没有等待循环结束继续执行代码...
感谢您的帮助
【问题讨论】:
-
您可能需要澄清您的问题......也许您想将
function (oneDataset)设为async function (oneDataset),然后等待一些代码? -
@MatthiasHerrmann 你不能通过返回来停止 forEach。 stackoverflow.com/questions/6260756/…
-
我不完全确定您的问题是什么。如果其中有多个满足响应要求的事物,则 for each 肯定会导致问题。但是因为您提到了承诺,我想知道您的问题是否与您的代码示例中不存在的循环有关......否则,承诺与您的问题无关。
-
我希望 Node 在继续之前等待 forEach 的全部执行...
-
@Zarathoustra75 为什么?鉴于您问题中的代码,这没有任何意义。 forEach 中没有任何东西值得等待。
标签: javascript node.js mongoose foreach promise