您的位置:首页技术文章
文章详情页

javascript - nodejs函数返回值为undefined,不太明白为什么。

【字号: 日期:2023-09-20 13:29:45浏览:18作者:猪猪

问题描述

javascript - nodejs函数返回值为undefined,不太明白为什么。javascript - nodejs函数返回值为undefined,不太明白为什么。

最后用了promise解决,代码如下:exports.selectByUsername = selectByUsername;function selectByUsername(username){

var promise = new Promise(function(resolve){ var sql = 'SELECT COUNT(*) count FROM wx_user WHERE username = ?'; var sqlParams = [username]; var count; co.query(sql,sqlParams,function(err,result){if(err){ return console.log(err.message);}console.log('------------------------开始查询---------------------');console.log(result);var str = JSON.stringify(result);var json = JSON.parse(str);count = json[0].count;console.log(count);console.log('------------------------查询结束---------------------');resolve(count); });});promise.then(function(value){ // console.log(value); return value;});return promise;

}

app.post(’/ajax’,urlencodedParser,function(req,res){

username = req.body.name;console.log(username);var promise = s.selectByUsername(username);promise.then(function(value){ console.log(value); if(value!==1){res.send('用户名不存在'); }});

});

参考文档:http://liubin.org/promises-book/

问题解答

回答1:

query里面的function在query完成后才会执行到,而这个时候外部函数已经返回了,所以count不会赋到值,仍然为undefined

回答2:

写在query里也不会返回count的,因为query这个方法是异步的

回答3:

简而言之,把return count 写在query 里面就好了。

标签: JavaScript