【发布时间】:2013-01-08 01:53:22
【问题描述】:
这是代码:
usermodel.findOne({ user: req.session.user }, function (err, usr){
following = [];
for (var i = 0; i < usr.follow.length; i++) {
usermodel.findOne({ _id: usr.follow[i] }, function (err, followed){
if (err) throw err;
following.push(followed);
});
}
if (err) throw err;
console.log(following);
res.render('home.ejs', {
user: usr,
following: following
});
});
我正在尝试将所有 usermodel.find 推送到以下数组中。在循环for 内,如果我使用console.log(following),控制台会显示包含所有猫鼬findresults 的数组,但问题是,在forloop 之外,数组following 是空的!这很奇怪,我不知道该怎么做。任何解决方案...?
感谢您的提前!
【问题讨论】:
-
这看起来像一个异步机制。这通常是 API 涉及此类回调函数的原因 - 回调不会立即调用,而是在将来的某个时间调用。因此,循环之后的代码会在任何回调开始之前运行。
标签: javascript node.js mongoose