db.serialize() асинхронный!
у меня возникла проблема с асинхронностью js, а именно метод db.serialize() модуля sqlite3. У меня то, что находиться на первом уровне в db.serialize() выполняется синхронно, но как только доходит до определённого места в коде - всё становиться асинхронным! Код который здесь - это один из тех вариантов попыток сделать его синхронным, также я использовал asyns/await и просто db.serialize(). И да, в переменных week и classes находяться массивы, а в table - пустой массив.
Вот мой код:
var db_serilize = new Promise((resolve, reject)=>{
db.serialize(()=>{
var classed_string = classed.toString();
var classed_no = classed_string.replace(/[<td>,</td>,<tr>,</tr>]/g, '');
var clomi = classes.toString();
for( var eve = 0; eve < week.length; eve++){
table.push(`<table border="3px"><caption>${week[eve]}</caption>`);
// начало асинхронности
db.each(`SELECT rowid, ${clomi} FROM ${week[eve]}`, (err, row)=>{
table.push(`${row}`);
for (var predmet = 0; predmet < classes.length; predmet++) {
if(predmet < classes.length){
table.push(`<td>${row[classes[predmet]]}</td>`);
}
if(predmet === classes.length){
table.push(`${row[classes[predmet]]}`);
}
console.log(row[classes[predmet]]);
};
});
table.push(`.`);
setTimeout(() => {
console.log("1000 sec.");
resolve();
}, 1000);
// конец асинхронности
};
});
})
db_serilize().then(()=>{
db.close();
var table_string = table.toString();
var table_not = table_string.replace(/,/g, '');
console.log(table_not);
document.write(table_not);
console.log('end read db');
});
И да, я использую electron, поэтому не удивляйтесь что у меня в одном коде и модуль sqlite3 и метод document.write().