【发布时间】:2013-12-22 23:49:48
【问题描述】:
我对 Node.js 还是很陌生(这周刚开始),有一个基本部分我很难理解。我有一个辅助函数,它可以调用 MySQL 数据库来获取一些信息。然后,我使用回调函数将该数据返回给调用者,这可以正常工作,但是当我想在该回调之外使用该数据时,我遇到了麻烦。代码如下:
/** Helper Function **/
function getCompanyId(token, callback) {
var query = db.query('SELECT * FROM companies WHERE token = ?', token, function(err, result) {
var count = Object.keys(result).length;
if(count == 0) {
return;
} else {
callback(null, result[0].api_id);
}
});
}
/*** Function which uses the data from the helper function ***/
api.post('/alert', function(request, response) {
var data = JSON.parse(request.body.data);
var token = data.token;
getCompanyId(token, function(err, result) {
// this works
console.log(result);
});
// the problem is that I need result here so that I can use it else where in this function.
});
如您所见,只要我在回调范围内,我就可以访问 getCompanyId() 的返回值,但我需要在回调之外使用该值。我可以通过将所有逻辑粘贴在该回调中来在另一个函数中解决这个问题,但在这种情况下这不起作用。任何关于如何更好地构建它的见解将不胜感激。到目前为止,我真的很喜欢 Node.js,但显然我有很多需要学习。
【问题讨论】:
标签: javascript node.js express callback