我在这里尝试的只是在函数外部访问局部变量“ 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”?

提前谢谢

最佳答案

您的问题是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

关于node.js - 如何从node.js中的函数外部访问局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24260637/

10-12 00:17
查看更多