@KERSOR

Как вывести значения?

function intervalParserGroup(connect){
    const queryAllTable = 'SHOW TABLES FROM communities_auto';
    const arrAllNameTable = [];
    connect.query(queryAllTable, function(err, results){
        arrAllNameTable.push(results);   
    })

    console.log(arrAllNameTable);
}


Когда я вывожу массив вне конекта, то выводит пустой, если внутри то все ок. Что сделать чтобы выводился вне?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Такие вопросы часто возникают, пора их в FAQ какой-нибудь..
Прочитайте про колбэки, промисы и async/await.

В вашем коде – первое: колбэк – function(err, results), которую вызовут позже, "потом", когда до-олгая операция запроса к БД завершится.

Короткий прямой ответ на вопрос: объявить функцию асинхронной и дождаться результата.
async function intervalParserGroup(connect) {
    const queryAllTable = 'SHOW TABLES FROM communities_auto';
    const arrAllNameTable = [];
    await new Promise((resolve, reject) => {
      connect.query(queryAllTable, (err, results) => {
          if (err) reject(err);
          arrAllNameTable.push(results);
          resolve();
      });
    });

    console.log(arrAllNameTable);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Azperin
Дилетант
Какого еще контекста и причем тут он ? На 99% уверен что проблема в асинхронности, убери свой console.log в колбек
Ответ написан
Комментировать
easimonenko
@easimonenko
Любитель
connect.query() асинхронный. Значит нужно либо воспользоваться Promise, либо async / await.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы