私がやっていることは、オプションのコールバックパラメータをオプションにすることです。コールバックが渡された場合は、その値をコールバック関数に送るだけで、値を返すだけです。私がコールバックを省略した場合、私は未定義になります。コールバックが存在する場合にコールバック(obj)を実行するその他のオブジェクトを返す場合
getByUsername = function(user_name, cb){
async.waterfall([
//Acquire SQL connection from pool
function(callback){
sql_pool.acquire(function(err, connection){
callback(err, connection);
});
},
//Verify credentials against database
function(connection, callback){
var sql = 'SELECT * FROM ?? WHERE ?? = ?';
var inserts = ['users','user_name', user_name];
sql = mysql.format(sql,inserts);
connection.query(sql, function(err, results) {
sql_pool.release(connection);
callback(err, results);
});
},
//Create user object
function(results, callback) {
if(results.length < 1){
if(cb){
cb(null);
} else {
return null;
}
}else {
var thisUser = new User(results[0]);
if(cb){
cb(thisUser);
} else {
return thisUser;
}
}
}], function (err, results) {
throw new Error('errrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrroooooorrrrrrrr');
}
)
}
をそこで質問は何ですか? –
笑ごめんなさい。それは正しく動作しません。コールバックが定義されていません。 –
これはやや明白です。引数の名前を見てください。また、nullの場合、なぜコールバックを呼び出すのでしょうか? –