【问题标题】:How can I save the query results to global variable? [duplicate]如何将查询结果保存到全局变量? [复制]
【发布时间】:2021-08-22 14:16:13
【问题描述】:

我想将查询结果保存到全局变量中。

我将使用 Chart.js 在 ReactNative 上使用全局变量 data

我该怎么办?有没有其他办法?

var query = "select * from hepi;";

var data;

db.all(query, [], (err, rows) => {
    if (err) {
      throw err;
    }
    data = rows;
    
});

console.log(data); // undefined. I can't use variable for Chart.js

【问题讨论】:

  • 不要尝试将其存储到全局变量中,在回调中编写使用它的代码。全局变量通常很糟糕,尤其是在执行异步时。
  • 正在将其分配给data,但仅在console.log()调用之后。

标签: javascript react-native sqlite expo


【解决方案1】:

db.all 是异步的。这意味着回调中的代码不会立即被调用(例如,连接到数据库并检索查询可能需要一些时间)。

所以,这就是发生的事情:

您定义了一个var data,然后您查询数据库,但结果不会同步检索。因此,console.log 被执行,显然打印未定义。您必须在回调中移动该 console.log(以及您想使用 data 运行的所有其他代码),或者您可以使用 Promise。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-03-01
    • 2019-08-30
    • 2014-07-22
    相关资源
    最近更新 更多