node.js for循环遇到数据库查询后回调操作 怎样将循环体内值传出
发布于 11 年前 作者 kingche 14805 次预览 最后一次回复是 11 年前 来自 问答
var admin_id = new Array ;
for(var i = 0 ;i <admin.length ; i++ )
{
UserModel.find({username:admin[i]},function(err,doc){
admin_id[i] = doc[0]._id;
console.log('+======'+admin_id); //打印1
});
}
console.log('+======'+admin_id);//打印2
打印1处可以正常打印数组的内容; 打印2处的内容总是为空。 请问怎样将数组的内容传出循环体外?
8 回复
可参考使用 eventproxy 的 after 方法。
可以试试 async 这是async的each用法,有中文注释喔~ https://github.com/bsspirit/async_demo/blob/master/each.js
是不是因为for会异步去执行, 然后先执行了 console.log(’+======’+admin_id); 所以内容是空的 我遇到了同样的问题… 求解答啊
用回调函数传递一下:
。。。回调。。。看下Q.all()
这有示例 https://github.com/alsotang/node-lessons/tree/master/lesson4
@mcdongWang 是需要回调一下 或者用push 在for外面 var list= [] 在打印1 后面 用 list.push(doc[0]._id);
楼主这最好是用回调函数传递一下