如何知道异步方法完成工作?我需要在console.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);
});
答案 0 :(得分:0)
将您的console.log
移到db回调
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);
});
});
只要db调用完成,该函数就会运行。以前您在db读取完成之前运行了console.log,因此您的数据库结果不在您的数组中。