更新:解決了,這確實是一個範圍問題。我通過移動數據庫類中的用戶列表代碼並返回預建列表來解決這個問題。在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