1

Приветствую всех. Прошу помочь разобраться с видимостью переменной

У меня локально есть функция с переменной myreturn, в 5й строке с низу переменная заполняется фразой, что бы показать, что все работает ( SQL запрос срабатывает ). Но после блока connection.query, переменная опять пустая, т.е. не видна

собственно, подскажите как передать?

var myreturn = "";

connection.connect();
connection.query(mysqlreq, function(error, result, fields){
    var reqid = "";
    var reqlo = "";
        result.forEach(function(row){
            myreturn = 'Все работает';

        });
        console.log(myreturn);//все нормально
});
connection.end();

console.log(myreturn);//вот тут переменная уже не видна
return myreturn;
Grundy
  • 81,538
serg
  • 65
  • Суть-то одна и та же: есть функция с callback - когда вызовется callback ты не знаешь, значения будут доступны только внутри этого коллбэка. Ну и возможно как-то можно приткнуть Promise, но это все зависит от реализации connection.query – Grundy Nov 15 '16 at 10:23
  • решение connection.query - из стандартных решений на NodeJS, коллбэк в указанной теме так же понятен. вопрос как это совместить. т.к. сам уже чувствую не разберусь. к сожалению аналогичных тем не нашел – serg Nov 15 '16 at 10:28
  • как это совместит - использовать значения только в коллбэке – Grundy Nov 15 '16 at 10:39
  • http://stackoverflow.com/questions/18361930/node-js-returning-result-from-mysql-query – serg Nov 15 '16 at 11:10
  • 1
    Думаю, всё дело в том, что callback, вызывается после console.log(myreturn);

    Решение: создать функцию, которая будет вызвана из callback'a и эта функция будет работать с результатом

    –  Nov 15 '16 at 11:16
  • 1
    @serg, в приведенном ответе все как раз и используется внутри коллбэка – Grundy Nov 15 '16 at 11:17
  • @Grundy - я собственно эту ссылку и написал, т.к. помогло ) – serg Nov 16 '16 at 06:38

0 Answers0