更新:解决了,这确实是一个范围问题。我通过移动数据库类中的用户列表代码并返回预建列表来解决这个问题。在node.js中执行异步调用时变量为空(闭包)
使用node.js,我做了一个异步调用函数findUser,并从回调中构建一个用户列表到变量内容中。在循环(它表示内容变量可用)期间这工作正常,但是当循环退出时,变量是空的。我该如何重写代码,以便在循环外部提供变量内容的值?
exports.listUsers=function(req,res) {
var content=''
isLoggedIn=user.findUser({},function(myuser) {
content = content +'<li>' + myuser.firstname + ' ' + myuser.lastname + "</li>\n";
//here value of content var is available
console.log(content)
})
//here value of content var is empty
console.log(content)
showPage(req,res,{'content':content})
}
这可能是一个范围界定问题吗?你可能会链接到一个现场版本,或尝试构建一个jsfiddle?我给它一个镜头,但没有发现任何有用的东西 – maaachine 2013-05-08 18:14:11
当然,它是空的,回调被执行**异步**。你不是说过吗?或者你不明白这是什么意思? – Bergi 2013-05-08 18:23:18