【发布时间】:2017-06-30 13:47:35
【问题描述】:
我正在使用带有 Electron 模块的 node.js 的 sqlite3 模块。我是 javascript 新手,正在努力处理回调和异步代码。
我的目的是让 getTable 函数运行,构建表数组并将该数组传递给回调函数,即 useTable 函数。
所以这个函数应该构建并传递表数组:
function getTable(callback) {
const sqlite3 = require('sqlite3').verbose();
var testDatabase = new sqlite3.Database('app/data/testDatabase.db');
var table = [];
var testRow = [];
testDatabase.each("SELECT * FROM test_Accounts", function(err, row) {
testRow.push(row.test_id);
testRow.push(row.test_creation_date);
testRow.push(row.domain);
testRow.push(row.test_login_url);
table.push(testRow);
testRow = [];
});
testDatabase.close();
callback(table);
}
并且这个函数将获取表格数组并使用它:
function useTable(table) {
//code that uses the table array passed to this function from the getTable function.
}
我会这样运行:
getTable(useTable);
当我运行它时,控制台没有显示任何错误。似乎 useTable 函数在 getTable 函数中完成表数组之前运行,我认为这是回调的主要目的之一,在获取该数组之前等待异步代码运行(在这种情况下是构建一个数组)和将其传递给另一个函数。
如何确保getTable函数中的表数组在通过并运行useTable函数之前完全生成?
【问题讨论】:
标签: javascript node.js sqlite callback electron