Javascript 函数不返回结果
我试图将一些复杂度重构为一个名为getData的函数,但调用该函数的代码似乎没有得到结果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) {
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
完成后立即执行