我有一个nodejs的异步问题。希望您能够帮助我。nodejs在异步更新数组时遇到问题
exports.DeviceInfo = function(req, res, next) {
var nets = req.body.networks;
db.collection("device", function(err, deviceConf) {
var detected_beacons = [];
if (!err) {
for (var i = 0; i < nets.length; i++) {
deviceConf
.find({
"data.number": nets[i]
})
.toArray(function(errFind, saver) {
if (!errFind && saver) {
saver.forEach(function(disp) {
var detected = {};
detected.address = disp.address;
detected_beacons.push(detected);
console.log(detected_beacons);
});
}
});
}
console.log(detected_beacons);
res.json(detected_beacons);
} else {
console.error(err);
res.status(500);
res.json({
message: "Couldn't connect to database"
});
}
});
};
如果我写一些日志,我们可以看到哪个是问题。 detected_beacons在for子句之前返回。我想为之后返回以便充满数据。我已阅读回调和承诺,但我不知道如何在我的代码中使用它们。
看看http://stackoverflow.com/q/39288896/18771的评论。你的代码中有完全相同的错误。 – Tomalak
我已经改变for for循环,但同样的问题。 – aserrin55
没有错误出现,但结果相同。 @Tomalak – aserrin55