如何知道异步方法是否正常工作?我需要控制台中的所有对象.log(resp),但结果我只得到一个空数组 []。
var sqlite = require("sqlite3");
var db = new sqlite.Database(process.cwd() + "/cb.db");
var resp = [];
db.serialize(function() {
db.each("SELECT * from user", function(err, data) {
var obj = {};
obj.name = data.user;
resp.push(obj);
});
console.log(resp);
});
将console.log
移动到数据库回调内
var sqlite = require("sqlite3");
var db = new sqlite.Database(process.cwd() + "/cb.db");
var resp = [];
db.serialize(function() {
db.each("SELECT * from user", function(err, data) {
var obj = {};
obj.name = data.user;
resp.push(obj);
console.log(resp);
});
});
每当数据库调用完成时,该函数就会运行。 以前,您运行控制台.log在数据库读取完成之前,因此数据库结果不在数组中。