我在这里尝试的只是访问本地变量' 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'.
您能告诉我如何访问&#39; htmlrows&#39;在功能之外?
非常感谢提前
答案 0 :(得分:2)
您的问题是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