Javascript 函数不返回结果

Javascript 函数不返回结果,javascript,Javascript,我试图将一些复杂度重构为一个名为getData的函数,但调用该函数的代码似乎没有得到结果 function getData(sql) { pool.getConnection(function(err, connection) { if (err) return; connection.query(sql, function(err, rows) { if (err) return; if (rows.length > 0) {

我试图将一些复杂度重构为一个名为getData的函数,但调用该函数的代码似乎没有得到结果

function getData(sql) {
  pool.getConnection(function(err, connection) {
    if (err) return;
    connection.query(sql, function(err, rows) {
      if (err) return;
      if (rows.length > 0) {
        console.log(rows);    // This outputs result from table
        return rows;
      } else {
        return [{"error":"Not found"}];
      }
    });
    connection.end();
  });
}
然而,当从这样的函数调用它时,我会得到未定义的返回,即使函数中的代码工作正常

app.get('/1/employees/past', function(req, res, next) {
    var rows = getData("select * from users");
    res.json(rows);
})

您的
返回
是从内部函数返回的,这不会影响外部函数

您需要捕获并返回它,并且由于它似乎与回调一起工作,您需要将额外的回调传递给
getData()

像这样的

function getData(sql, callback) {
     // ...    
     connection.query(sql, function(err, rows) {
         // ...
         callback && callback(rows); // etc
     });
     // ...
}

如果希望更安全,请确保回调使用(链接到我自己的博客帖子)实现
[[Call]]

您的
返回是从内部函数返回的,这不会影响外部函数

您需要捕获并返回它,并且由于它似乎与回调一起工作,您需要将额外的回调传递给
getData()

像这样的

function getData(sql, callback) {
     // ...    
     connection.query(sql, function(err, rows) {
         // ...
         callback && callback(rows); // etc
     });
     // ...
}

如果您想更安全,请确保回调使用(链接到我自己的博客帖子)实现
[[Call]]

函数不会返回任何内容!
getData
函数中的
getConnection
函数正在调用一个函数,该函数调用一个返回某些内容的函数;
getData
函数本身没有返回任何内容

此外,如果此代码异步执行,那么所有返回都将在
getData
函数返回后很久执行


您要么使用同步
返回路径
要么使用异步回调路径,不能同时使用这两种方式。

函数不返回任何内容!
getData
函数中的
getConnection
函数正在调用一个函数,该函数调用一个返回某些内容的函数;
getData
函数本身没有返回任何内容

此外,如果此代码异步执行,那么所有返回都将在
getData
函数返回后很久执行


您可以选择同步
返回路径或异步回调路径,您不能混合使用这两种样式。

您的
getData
函数不返回任何内容-代码中的返回语句都用于传递到
connection.query
connection.query的匿名函数


您的连接相关函数是异步的——即,它们在您调用它们之后立即返回,而不等待任何结果可用。如果要对返回的结果执行某些操作,需要在一个匿名函数中执行,而不是在
getData
完成后立即尝试执行此操作。

您的
getData
函数不会返回任何内容-代码中的返回语句都用于传递到
connection.query
connection.query的匿名函数

您的连接相关函数是异步的——即,它们在您调用它们之后立即返回,而不等待任何结果可用。如果要对返回的结果执行某些操作,则需要在一个匿名函数中执行,而不是在
getData
完成后立即执行