我正在尝试编写,当我单击登录时,将检查用户名是否存在于数据库中。
有没有办法编写一个包含 axios.get(URL).then() 的函数,以便它能给我一个 bool 结果?如果用户名存在则为 true,否则为 false。
import axios from 'axios'
function validateUser(username) {
URL: API_GATEWAY_URL
isExist = true;
axios.get(url + '?username=' + username)
.then(response => {
return response.json})
.then(json => {
if(json.data.statusCode != 200)
{
isExist = false;
}
})
.catch(error => console.error(error))
return isExist;
}
但是,无论 (json.data.statusCode != 200) 是否为 true,isExist 似乎都无法改变。请帮忙,我是 JavaScript 新手。
最佳答案
发生这种情况是因为 axios.get
返回 Promise
这是异步工作的。所以你的 isExist
没有变异。此外,每当您需要控制状态时,您都应该从 validateUser
返回 Promise。
您也可以使用async/await
.
编辑:(以某种 react /伪代码方式的最小实现)
// api.js
import axios from 'axios'
function validateUser(username) {
return axios.get(url + '?username=' + username)
}
// main.js
import api from 'api'
onUserKeypress(username) {
api.validateUser(username)
.then(({json}) => {
if(json.data.statusCode != 200) {
this.form.valid = false;
this.showError(username)};
})
}
关于javascript - 如何使用axis.get到Api网关检查用户是否存在于数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241399/