#node.js #variables #local
#node.js #переменные #Местные новости
Вопрос:
Все, что я пытаюсь здесь, это получить доступ к локальной переменной ‘htmlrows’ вне функции, но, похоже, это не так просто с node.js .
var htmlrows;
query.on('row', function(row) {
console.log("%s |%s |%d", row.empid,row.name,row.age);
htmlrows = "<tr><td>" row.empid "</td><td>" row.name "</td><td>" row.age "</td></tr>";
});
console.log("htmlrows outside function");
console.log(htmlrows); // console log prints 'undefined'.
Не могли бы вы сообщить мне, как получить доступ к «htmlrows» вне функции?
Заранее большое спасибо
Комментарии:
1. Почему бы не применить логику внутри функции, где возвращается результат?
2. Спасибо Бену за быстрый ответ. Как вы правильно сказали, это возможно, но я хотел бы получить доступ за пределами функции. Просто для моего обучения, если бы я действительно хотел получить доступ за пределы функции, как бы я это сделал?
3. Предполагая, что есть
end
событие, в экземпляреEventEmitter
которого естьquery
(это типично):query.on('row',function(row){...htmlrows = "...";}).on('end',function(){console.log(htmlrows);});
Ответ №1:
Ваша проблема в том, что node.js является асинхронным, поэтому console.log(htmlrows);
выполняется до завершения функции запроса.
Что вам нужно сделать, так это иметь отдельную функцию, которая прослушивает обратный вызов из функции запроса.
Вы могли бы попробовать использовать асинхронное промежуточное программное обеспечение для node.js , что позволит вам последовательно связывать асинхронные вызовы, чтобы они выполнялись в определенном порядке:
var some_data = null;
async.series([
function(callback) {
//...do a thing
function_1(callback);
},
function(callback) {
//...do another thing
function_2(callback);
}
//...etc
]);
function function_1(callback) {
some_data = 'value';
console.log('function_1!');
return callback();
}
function function_2(callback) {
console.log('function_2: ' some_data);
return callback();
}
приведет к:
#:~ function_1!
#:~ function_2: value
Комментарии:
1. Спасибо. Попробую этот подход.