为什么在Node.js中执行SQL查询后不能使用局部变量?

方丈:

我必须选择数据库中所有可用的标记,以便可以在函数中使用它们,但是在查询的回调函数中为变量分配值之后,不能使用变量,为什么呢?

代码不起作用:

    let tags = [];
    db.query(
      `select * from tags`,
      (err, results) => {
        tags = results;
      } 
    )
    console.log(tags);
    return;

但这有效:

    let tags = [];
    db.query(
      `select * from tags`,
      (err, results) => {
        tags = results;
        console.log(tags);
      } 
    )
   return;

但为什么?我想tags在该查询后再次使用该变量,但是在查询后以某种方式销毁了分配给它的值。我要改变什么?

aRvi:

Javascript是异步语言,db.query是一种异步的网络调用,因此,如果要使用查询的响应,则必须在执行db.query之后调用它。

在第一种情况下,console.log(tags);run before db.query被执行,您将获得undefined响应。

在第二种情况下console.log(tags);,在db.query执行之后运行,这就是为什么要从查询中获取响应。

您可以通过Promise使用它:

async function queryExec() {

    let tags = await promiseQuery(`select * from tags`);
    console.log(tags);
    return tags;
}

function promiseQuery(query) {
    return new Promise((resolve, reject) => {
        db.query(query, (err, results) => {
            if (err) {
                return reject(err);
            }
            resolve(results);
        })
    })
}

使用异步/等待:

async function queryExec() {

    let tags = await db.query(`select * from tags`);
    console.log(tags);
    return tags;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Python

为什么node.js需要python

来自分类Java

为什么局部变量在Java中是线程安全的

来自分类Java

为什么局部变量在Java中也称为“自动”?

来自分类Java

Java:为什么我不能在任何类中使用final来访问局部变量JPanel?

来自分类Dev

为什么将node js用于cordova?

来自分类Dev

cron为什么不执行我的node.js脚本?

来自分类Dev

为什么不能使用反射获得局部变量名称?

来自分类Dev

为什么使用* ngIf时模板局部变量在模板中不可用?

来自分类Dev

将js函数分配给局部变量后,为什么它们会失败?

来自分类Dev

为什么不能在ngAfterViewInit函数中访问局部变量?

来自分类Dev

为什么lambda对象中的局部变量是const?

来自分类Dev

为什么我不能从python中的异常返回我的局部变量?

来自分类Dev

为什么在React功能组件中使用局部变量?

来自分类Dev

为什么Node JS需要LIBUV?

来自分类Dev

Node.JS-为什么不等待

来自分类Dev

为什么局部变量不能节省价值?

来自分类Dev

为什么在GNU C基本内联asm语句中不能使用局部变量?

来自分类Dev

为什么局部变量会在Python中循环

来自分类Dev

为什么我显然使用node.js连接到SQL Azure数据库,但未执行查询?

来自分类Dev

为什么在Node JS中执行Mysql查询比直接执行Mysql查询要慢得多?

来自分类Dev

为什么Node.js不执行回调函数?

来自分类Dev

为什么函数最终在Node JS中执行

来自分类Dev

在类构造函数中,为什么“这是必需的”?为什么我不能使用局部变量?

来自分类Dev

为什么我不能使用SystemJS直接从node_modules导入?

来自分类Dev

为什么我的查询不能使用 ActiveRecord?

来自分类Dev

如果我使用宏与局部变量执行除法,为什么我的结果会有所不同?

来自分类Dev

为什么 Angular 需要 Node.js?

来自分类Dev

为什么我需要 node js,什么是框架

来自分类Dev

为什么不能在回调中使用局部变量?

Related 相关文章

  1. 1

    为什么node.js需要python

  2. 2

    为什么局部变量在Java中是线程安全的

  3. 3

    为什么局部变量在Java中也称为“自动”?

  4. 4

    Java:为什么我不能在任何类中使用final来访问局部变量JPanel?

  5. 5

    为什么将node js用于cordova?

  6. 6

    cron为什么不执行我的node.js脚本?

  7. 7

    为什么不能使用反射获得局部变量名称?

  8. 8

    为什么使用* ngIf时模板局部变量在模板中不可用?

  9. 9

    将js函数分配给局部变量后,为什么它们会失败?

  10. 10

    为什么不能在ngAfterViewInit函数中访问局部变量?

  11. 11

    为什么lambda对象中的局部变量是const?

  12. 12

    为什么我不能从python中的异常返回我的局部变量?

  13. 13

    为什么在React功能组件中使用局部变量?

  14. 14

    为什么Node JS需要LIBUV?

  15. 15

    Node.JS-为什么不等待

  16. 16

    为什么局部变量不能节省价值?

  17. 17

    为什么在GNU C基本内联asm语句中不能使用局部变量?

  18. 18

    为什么局部变量会在Python中循环

  19. 19

    为什么我显然使用node.js连接到SQL Azure数据库,但未执行查询?

  20. 20

    为什么在Node JS中执行Mysql查询比直接执行Mysql查询要慢得多?

  21. 21

    为什么Node.js不执行回调函数?

  22. 22

    为什么函数最终在Node JS中执行

  23. 23

    在类构造函数中,为什么“这是必需的”?为什么我不能使用局部变量?

  24. 24

    为什么我不能使用SystemJS直接从node_modules导入?

  25. 25

    为什么我的查询不能使用 ActiveRecord?

  26. 26

    如果我使用宏与局部变量执行除法,为什么我的结果会有所不同?

  27. 27

    为什么 Angular 需要 Node.js?

  28. 28

    为什么我需要 node js,什么是框架

  29. 29

    为什么不能在回调中使用局部变量?

热门标签

归档