gpt4 book ai didi

javascript - Node.js 不等待数据

转载 作者:行者123 更新时间:2023-12-03 07:06:19 25 4
gpt4 key购买 nike

function checkContact(req, res) {
for (var numb in req.body) {

console.log(numb + ":" + req.body[numb]);

checkValue(numb, function(err, result) {
if (result) {
console.log(result);
send[result] = "true";
console.log(send);

}
if (err) {
console.log(err + "not");
}
});
}

res.json(send);

}

function checkValue(number, callback) {

mongo.connect(conn, function() {

var doc = mongo.collection("user");
doc.findOne({
number: number
}, function(err, res) {
if (res) {

//console.log(send+"val");
//send[number]="true";
callback(null, number);

}

});
callback(null, 0);
});

}

这里 res.json(send) 立即执行,无需等待数据放入 send 变量。我知道 Node.js 是异步的,这就是它的执行方式。有没有一种方法可以仅在 for 循环执行完毕后发送响应?预先感谢您的帮助。

最佳答案

因为 Node.JS 是异步的,所以您需要将其嵌入到回调中。

function checkContact(req, res) {
var reqLength = req.body.length;

for (var numb in req.body) {

console.log(numb + ":" + req.body[numb]);

checkValue(numb, function(err, result) {
if (result) {
console.log(result);
send[result] = "true";
console.log(send);

}
if (err) {
console.log(err + "not");
}

reqLength--;

if(reqLength === 0) {
res.json(send);
}
});
}
}

关于javascript - Node.js 不等待数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com