我不明白为什么在猫鼬/函数中的代码之前执行底部的命令。
router.post("/path", function(req, res, next) {
for(var i = 0; i < req.body.getname.length; i++) {
Bun.findOne({title: req.body.getname[i]}, function(err, data) {
console.log("second")
})
}
console.log("first")
})
答案 0 :(得分:0)
findOne方法是一种异步方法,在执行其回调之前会等待响应。在您的情况下,for loop
立即开始执行异步调用,但是由于尚未收到响应,因此代码继续以代码console.log("first")
开始。收到findOne的响应后,它将执行回调中的所有代码。
要使该行在回调中的代码之前执行,请尝试以下两种方法
router.post("/path", function(req, res, next) {
console.log("first")
for(var i = 0; i < req.body.getname.length; i++) {
Bun.findOne({title: req.body.getname[i]}, function(err, data) {
console.log("second");
});
}
});
OR
router.post("/path", function(req, res, next) {
for(var i = 0; i < req.body.getname.length; i++) {
Bun.findOne({title: req.body.getname[i]}, function(err, data) {
//Bring that line first
console.log("first");
console.log("second");
});
}
}