これは、async/nodejsの初心者の間でよくある間違いです。基本的に、ノードのイベントループの性質を破壊する同期関数内に非同期関数をラップしました。戻り式をコールバックに置き換える必要があります。以下を参照してください:
// Method
function getUserInfo (userID, dynamicField, callback) {
var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
query.on('result', function(row) {
callback(null, row.dynamicField);
});
};
// Implementation
getUserInfo(8, userEmail, function(err, result){
console.log(err || result);
});
慣例により、Nodejsでは常にコールバックの最初にエラーオブジェクトを渡します。この場合、キャプチャするエラーがないため、代わりにnullを渡します。