Я использую модуль sqlite3 для node.js с электронным модулем. Я новичок в javascript и борюсь с обратными вызовами и асинхронным кодом.Как передать результаты SQLite в обратный вызов в Nodejs
Мое предназначение для запуска функции 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?