node.js - nodejs怎么同步查询数据

 狠毒的水瓶_617_223_489_321 发布于 2022-11-04 23:31

查询数据库返回数据

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

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

    2022-11-08 22:52 回答
  • nodejs io 处理都是 异步的。。。

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

    2022-11-08 22:59 回答
  • 显然 get_result函数,没有返回值~~~
    你希望从get_result函数返回什么呢?

    2022-11-08 23:19 回答
  • promise

    2022-11-08 23:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有