Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使Nodejs调用同步,这样我就可以轻松地使用它了?_Javascript_Node.js_Asynchronous - Fatal编程技术网

Javascript 如何使Nodejs调用同步,这样我就可以轻松地使用它了?

Javascript 如何使Nodejs调用同步,这样我就可以轻松地使用它了?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,第一个函数是关于请求的,第二个函数是关于调用mysql的。因为它是异步的,所以不能工作。 有人能告诉我如何使它像C#一样同步工作吗?您可以按顺序链接要调用的函数 e、 g.您可以使res.send(ret)作为您的CheckUserValid的回调,您的CheckUserValid方法的签名已经暗示了一个回调。 当db请求完成时,您可以使用它调用某些内容,如: app.post('/login', function (req, res) { var login = req.body.l

第一个函数是关于请求的,第二个函数是关于调用mysql的。因为它是异步的,所以不能工作。
有人能告诉我如何使它像C#一样同步工作吗?

您可以按顺序链接要调用的函数


e、 g.您可以使
res.send(ret)
作为您的
CheckUserValid

的回调,您的
CheckUserValid
方法的签名已经暗示了一个
回调
。 当db请求完成时,您可以使用它调用某些内容,如:

app.post('/login', function (req, res) {

    var login = req.body.login;
    var pass = req.body.pass;

    var ret = CheckUserValid(login, pass);

  res.send(ret);
})

function CheckUserValid(login, pass,callback) {
    var sql = "SELECT * FROM `user` WHERE login = ? AND pass= ?";
    client.query(sql, [login, pass], function selectResutl(err, results, fields) {
         console.log(results);
        if (!err) return true;
        else
            throw err;
    });
}
按照惯例,您应该将
err
作为第一个参数传递,但最终由您决定。
但是,您可以将原始错误传递到初始函数并在那里处理。

您应该看看模块。

如果要使用NodeJS,您还可以学习编写异步代码。
CheckUserValid
函数接受回调,为什么不使用它呢?
app.post('/login', function (req, res) {
  var login = req.body.login;
  var pass  = req.body.pass;

  // use a closure here for the callback of checkUserValid
  checkUserValid(login, pass, function(err, isValid) {
    // send the response when checkUserValid is done
    res.send(isValid)
  });
})

function checkUserValid(login, pass, callback) {
  var sql = "SELECT * FROM `user` WHERE login = ? AND pass= ?";
  client.query(sql, [login, pass], function(err, results, fields) {
    console.log(results);
    if (!err) {
      // there is no error, pass null for the error
      // and true for the result
      callback(null, true);
    } else {
      // an error occurred in the db-query
      // pass it to the callback
      callback(err)
    }
  });
}