提问人:squatman 提问时间:11/14/2023 最后编辑:squatman 更新时间:11/14/2023 访问量:31
Axios GET 响应数据正确,但 Promise Pending to 变量 [duplicate]
Axios GET response data correct, but Promise Pending to variable [duplicate]
问:
我有一个正在运行的后端服务器,该服务器在 Axios GET 请求之后从数据库请求数据。
app.get('/calendars', (req, res) => {
//query database for userlist
sql.connect(config, err => {
// ... error checks
console.log("err1-" + err)
// Query
new sql.Request().query('SELECT full_name AS "id", full_name AS "label", CAST(0 AS BIT) AS "readonly", CAST(1 AS BIT) AS "active" FROM [User];', (err, result) => {
// ... error checks
console.dir(result.recordset)
res.status(200).json(result.recordset)
})
})
})
我的前端 GET 请求正确地注销了 response.data,但是当我在分配给变量后尝试记录返回的 response.data 时,我得到了一个 Promise 待处理。我在网上看过,我肯定有一个“等待”,我尝试过一个 .then,但得到相同的结果。
async function getCalendars() {
try {
const response = await axios.get('http://localhost:3000/calendars');
console.log(response.data)
return response.data
} catch (error) {
console.error(error);
}
}
var defaultCalendars = getCalendars()
console.log(defaultCalendars);
任何帮助将不胜感激。
提前致谢
@evolutionbox评论后提供更多信息。
async function getCalendars() {
try {
return await axios.get('http://localhost:3000/calendars');
} catch (error) {
console.error(error);
}
}
const defaultCalendars = getCalendars().then(result => console.log(result))
console.log(defaultCalendars);
与最初一样,第 107 行 - console.log(result) 显示数据,但第 109 行 - console.log(defaultCalendars) 再次是 Promise {}。
在异步函数中添加了 await getCalendars()。
var defaultCalendars;
async function run() {
defaultCalendars = await getCalendars()
}
async function getCalendars() {
try {
return await axios.get('http://localhost:3000/calendars');
} catch (error) {
console.error(error);
}
}
run();
console.log(defaultCalendars);
答:
-1赞
Λrѕlαɴ Iꜰᴛɪᴋʜᴀʀ
11/14/2023
#1
如果您将 await 与变量一起使用,它将起作用。
const response = await axios.get('http://localhost:3000/calendars');
const data= await response.data;
console.log(data)
评论
0赞
squatman
11/14/2023
您好,感谢您的回复。如果我像这样使用 await,我会收到以下错误“Uncaught SyntaxError: await is valid only in async functions and the top level body of modules”。我的示例代码是直接用 calendar.js 编写的,而不是在任何方法中编写的。
评论
getCalendars()
.then
getCalendars().then(result => console.log(result))
.then
.then