Я застрял в получении результата возврата от функции для аутентификации пользователя.Как вернуть значение вложенной функции в Nodejs
utility.isAspAuth = function(token){
queryString = {
sql: 'SELECT * FROM SecurityToken WHERE Token = ?',
timeout: 40000, // 40s
values: [token]
};
var curTime = new Date();
connection.query(queryString,function(err,rows,field){
if(err){
console.log('error on query' + err);
}else{
var result = rows[0];
result.forEach(function(element, index, array){
if(Date.parse(result.Expires) > curTime){
return true;
}else{
return false;
}
});
}
});
};
так я называю эту функцию в другом файле, но результат не определен
console.log(utility.isAspAuth(token))
может кто-нибудь дать мне подсказку о том, как это исправить?
Спасибо большое
асинхронный, асинхронном, асинхронный. Функция 'connection.query()' асинхронна. Это означает, что он вызывает обратный вызов когда-то LATER, долго после того, как 'isAspAuth()' уже вернулся. Вы не можете вернуть асинхронное значение из такой функции. Вместо этого вы должны передать обратный вызов в 'isAspAuth()' и вызвать этот обратный вызов, когда у вас есть окончательное значение, и вы можете использовать только значение из этого обратного вызова. Есть сотни дубликатов этого типа вопроса. Я поеду искать, чтобы отметить это. – jfriend00