【发布时间】:2015-08-04 09:40:57
【问题描述】:
所以我使用的是异步,这个函数会输出一些 id 和计数的结果,而不是“回调”
getWaitingGames: function(req,res){
var me = req.session.passport.user;
var rez=[];
console.log("meeeeeeeeee");
console.log(me);
GivenQuestion.find().where({user_id:me}).exec(function(err,data){
var tpm_id = data[0].partie_id;
console.log(tpm_id);
console.log(data);
async.each(data, function(d, callback) {
var parties = [];
if (d.partie_id != tpm_id){
console.log(d.partie_id);
parties.push(d.partie_id);
tpm_id=d.partie_id;
GivenQuestion.count().where({
partie_id: d.partie_id,
user_id: me
}).exec(function(e, countRes) {
console.log(countRes);
if (countRes==2){
rez.push(d.partie_id);
callback();
}
});
}
}, function(err) {
if (err) {
console.log(error);
}
else{
console.log("callback");
res.ok(rez);
}
});
});
},
这是为什么呢?我找不到想要的我做错了,似乎和文档中的一样,我以前用过同样的方式
编辑:是的,我可以像你们建议的那样在 if 之后放置回调,但随后我得到一个空的 rez。为什么? 异步是否只工作一个级别? (我的意思是,我在 2 .exec() 里面)
【问题讨论】:
-
如果
countRes!=2你没有打电话给callback()。看起来您应该将callback()移到if语句之外,以便每次迭代async.each时都会调用它。
标签: javascript node.js asynchronous sails.js waterline