Javascript 如何将查询结果保存到全局变量?

Javascript 如何将查询结果保存到全局变量?,javascript,react-native,sqlite,expo,Javascript,React Native,Sqlite,Expo,我想将查询结果保存到全局变量 我将使用Chart.js在ReactNative上使用全局变量数据 我该怎么办?还有别的办法吗 var query = "select * from hepi;"; var data; db.all(query, [], (err, rows) => { if (err) { throw err; } data = rows; }); console.log(data); // undef

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

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

我该怎么办?还有别的办法吗

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

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

下面是发生的事情:


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

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