【发布时间】:2021-11-22 13:51:38
【问题描述】:
我是 JavaScript/NodeJS 的新手,很难理解这里发生了什么。我正在编写一个函数,它将根据单独函数中的 API 发布请求的响应执行一些操作。目前,该操作只是显示有关失败或成功的消息。
以下代码(在 app.js 文件中)仅用于获取用户输入,将它们传递给 login_user 函数(在 authenticate.js 文件中),并根据 login_user 的响应显示一条消息。
const { login_user } = require('./authenticate');
// Other requirements
// App initialization
app.post('/auth', function (req, res) {
let username = req.body.username;
let password = req.body.password;
let response = login_user(username, password);
if (response == 204) {
res.send("Success");
} else {
res.send("Failure");
}
});
以下代码(在 authenticate.js 中)接受用户输入,进行 API 调用,并返回响应的状态代码。
const axios = require('axios');
const querystring = require('querystring');
function login_user(username, password) {
var data = {
j_username: username,
j_password: password
};
axios.post("https://fakeurl.com", querystring.stringify(data))
.then(function (response) {
return response.status;
})
.catch(function (error) {
return response.status;
});
}
module.exports = {
login_user
}
发生的情况是,一旦调用 login_user 函数,代码继续执行并直接进入 if/else 语句的 else 子句,总是导致失败。我想在执行 if/else 语句之前等待返回响应。
我尝试在此配置中使用 async/await...
app.post('/auth', async function (req, res) {
let username = req.body.username;
let password = req.body.password;
let response = await login_user(username, password);
if (response == 204) {
res.send("Success");
} else {
res.send("Failure");
}
});
...但没有任何运气。我做错了吗?
【问题讨论】:
标签: javascript node.js express