我使用 axios 一段时间了,但我就是无法解决这个问题。 尝试了 axios 和 fetch,但它并没有解决我的 promise ,我的状态仍然是一个 promise 。
import axios from 'axios';
export const login = async (state, payload) => {
try {
const response = await axios.post('http://localhost:8080/token-auth/', payload)
const data = await response.data
return {
user: data.user,
loggedIn: true,
error: false
}
}
catch (error) {
return {
user: null,
loggedIn: false,
error: true
}
}
} const response = await axios.post('http://localhost:8080/token-auth/', payload)
return await response.data
}
catch (error) {
return {
user: null,
loggedIn: false,
error: true
}
}
}
它总是返回一个 promise 而不是数据,但是如果我console.log
,我会在控制台上获取数据。
最佳答案
async
函数将始终返回 Promise。
函数前面的“async”一词意味着一件简单的事情:函数总是返回一个 promise 。其他值自动包装在已解决的 promise 中。
因此,当您调用异步函数时,您必须处理 promise 。
试试这个。
import axios from "axios";
export const login = async (state, payload) => {
try {
const response = await axios.post(
"http://localhost:8080/token-auth/",
payload
);
const data = await response.data;
return {
user: data.user,
loggedIn: true,
error: false
};
} catch (error) {
return {
user: null,
loggedIn: false,
error: true
};
}
};
(async function() {
let response = await login(...);
console.log(response);
})()
示例:
async function f() {
return 1;
}
//Handle promise with then
f().then(console.log); // 1
关于javascript - axios 没有解决,状态仍然是一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026825/