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().


Ответы (0 шт):