我对编程并不陌生,但我正在进入 Node.JS。我了解阻塞与非阻塞操作。我知道将事物推向非阻塞状态是 Good Thing™。我想了解的是如何确保,如果我异步推送事物,我如何确保程序在继续处理/返回之前收集了所有不同请求的所有数据?
下面是一些使用node-mysql 的示例代码。为了论证,它可以是任何东西(Mongo、MySQL、文件读取、http 请求等),因为我意识到 mysql 模块具有并行自身的能力。
function getUserInfo(userID, myDB){
var users, profile, login;
// Get all of the account data
myDB.query("SELECT * FROM `users` WHERE `id`='"+userID+"' LIMIT 0,1", function(err, row){
users = JSON.stringify(row);
}
// Get all of the profile data
myDB.query("SELECT * FROM `profile` WHERE `id`='"+userID+"' LIMIT 0,1", function(err, row){
profile = JSON.stringify(row);
}
// Find their last logged in IP
myDB.query("SELECT `ip`,`date` FROM `login` WHERE `userid`='"+userID+"' ORDER BY DESC LIMIT 0,1", function(err, row){
login = JSON.stringify(row);
}
// Do some other processing here... Once all mysql is done.
return(users, profile, login);
}
这里的答案仅仅是将所有这些调用转储到Async.js并收工吗?