查询数据库返回数据
javascript
function get_result(mac, callback) { db.query('SELECT device_id from terminal_device WHERE mac=?', [mac], function (err, rows) { if (err) { return callback(err, rows); } callback(null, rows); }); };
调用上面方法
javascript
var result = get_result('30-3A-64-91-52-01', function (err, rows) { console.log(rows[0][0] + "\t1") return rows[0][0]; }) console.log(result + "\t2")
现在的问题:调用方法里输出的日志有结果,并且取值正确 ,但日志2输入的是undefined不知道怎么解决,应该是nodejs异步的问题,但不知道怎么解决
nodejs在IO处理的时候本来就是异步的,这和js引擎的原理是分不开的,如果所有耗时操作都是同步的,那么必然会堵塞当前js主线程,导致并发请求出现排队堵塞的情形。js引擎正是将耗时操作交给libuv内部的线程池来处理,这样js主线程就等着接收libuv的事件轮询回掉就可以了。具体关于异步和原理可以参考我的博文:js异步之惑
nodejs io 处理都是 异步的。。。
显然 get_result函数,没有返回值~~~
你希望从get_result函数返回什么呢?
你问的这个问题,说明你完全不了解回调啊异步啊这些东东
promise