Nodejs变量值重置



仍然新的nodejs不确定我在这里做错了什么,我试图从这个函数返回一个值。然而,我试图返回的变量总是重置。

function executeQuery( stmt, data ) {
  var outhjk = "";
  pool.connect(function(err, client, done) {
    if(err) {
      console.error('error fetching client from pool', err);
    }
    client.query(stmt, data, function(err, result) {
      //call `done()` to release the client back to the pool
      done();
      if(err) {
        return console.error('error running query', err);
      }
      outhjk = "just work please";
    });
  });
  return outhjk;
}

您的查询没有在池内运行。连接它直接返回var = ";如果你使用的是最新版本的node.js,你可以使用new Promise((resolve, reject)=>{});或者如果旧版本使用'async'模块或任何其他模块来处理node.js异步函数

客户端。查询是异步的。return语句:return outhjk;将在函数执行之前被调用,因为return更快…

处理这个问题的标准方法是使用回调函数:

function executeQuery( stmt, data, callback ) {
  var outhjk = "";
  pool.connect(function(err, client, done) {
    if(err) {
      console.error('error fetching client from pool', err);
    }
    client.query(stmt, data, function(err, result) {
      //call `done()` to release the client back to the pool
      done();
      if(err) {
        return console.error('error running query', err);
      }
      outhjk = "just work please";
      callback(outhjk);
    });
  });
}

然后用回调函数调用函数,你可以这样做:

var stmt = //stmt value here;
var data = //data value here;
executeQuery( stmt, data, function (outhjk) {
   //here you can use outhjk
});

阅读本文了解回调的要点

最新更新