nodeJS从callback中返回值

我正在构build一个应用程序,在特定的调用中,我必须阻止并等待来自validation查询的结果,然后再继续。

function authenticate(userid, hash) { mysql_client.query("SELECT `hash` FROM `auth` WHERE `userid` = " + userid, function selectCb(err, results, fields) { if (err) { client.send("Error communicating with mysql, please retry your request"); return false; } if(results.length == 0 || results[0].hash != hash) { client.send("Error comparing authentication data with database, please retry request"); return false; } return true; } ); } 

我希望能够从authenticate()函数本身返回这些值,而不是内部匿名函数selectCb,并具有身份validation块,直到callback完成。 我怎么能这样做?

你的外部函数需要提供一个callback本身,可以在mysql调用完成后执行。 一些沿着这条线:

 function authenticate(user, pass, callback) { mysql_client.query("...", function (err, results, fields) { if (err) { callback("Error communicating ..."); } else if (results.length ...) { callback("Error comparing authentication..."); } callback() }); }); 

用法示例:

 authenticate('jim', '123456', function (err) { if (err) { alert(err); } else { alert('Welcome'); } });