nodejs怎么同步查询数据

吉林乌拉
  • 456

查询数据库返回数据

javascriptfunction 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);
    });
};

调用上面方法

javascriptvar 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异步的问题,但不知道怎么解决

回复
阅读 6.9k
6 个回答
✓ 已被采纳

promise

显然 get_result函数,没有返回值~~~
你希望从get_result函数返回什么呢?

nodejs在IO处理的时候本来就是异步的,这和js引擎的原理是分不开的,如果所有耗时操作都是同步的,那么必然会堵塞当前js主线程,导致并发请求出现排队堵塞的情形。js引擎正是将耗时操作交给libuv内部的线程池来处理,这样js主线程就等着接收libuv的事件轮询回掉就可以了。具体关于异步和原理可以参考我的博文:js异步之惑

nodejs io 处理都是 异步的。。。

你问的这个问题,说明你完全不了解回调啊异步啊这些东东

使用同步比异步查询优异在哪里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏