Javascript 如何使Nodejs调用同步,这样我就可以轻松地使用它了?
第一个函数是关于请求的,第二个函数是关于调用mysql的。因为它是异步的,所以不能工作。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
有人能告诉我如何使它像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)
}
});
}