javascript - 使用 axios 反应原生无法获取承载令牌
问题描述
我使用来自后端服务器的 axios 收到了一个 api 请求。我想将不记名令牌保存到设备存储或本地存储。但是当我console.log
为不记名令牌做的时候,它似乎不起作用,因为我得到的是一个承诺。
这是我的方法
import {AsyncStorage, Alert} from 'react-native';
export default function login(email,password,setLoading){
console.log('Loading...')
setLoading(true)
axios.post('http://52.74.70.6/api/auth/login',{
email: email,
password: password
},{
headers:{
Accept: 'application/json',
'Content-Type': 'application/json',
}
})
.then((res)=>{
setLoading(false)
AsyncStorage.setItem('bearer_token', res.data.bearer_token);
console.log(AsyncStorage.getItem('bearer_token'))
console.log('Loading Finished')
}).catch((err)=>{
setLoading(false)
console.log(err)
AlertErr()
})
}
我得到的是
Loading...
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
Loading Finished
解决方案
您可以使用async/await
with try/catch
which 使其更具可读性。此外,您将需要await
请求,AsyncStorage
因为它返回一个承诺。
import { AsyncStorage, Alert } from "react-native";
export default async function login(email, password, setLoading) {
console.log("Loading...");
setLoading(true);
const url = "http://52.74.70.6/api/auth/login";
const data = {
email: email,
password: password,
};
const headers = {
Accept: "application/json",
"Content-Type": "application/json",
};
try {
const response = await axios.post(url, data, { headers: headers });
setLoading(false);
await AsyncStorage.setItem("bearer_token", res.data.bearer_token);
console.log(await AsyncStorage.getItem("bearer_token"));
console.log("Loading Finished");
} catch (err) {
setLoading(false);
console.log(err);
AlertErr();
}
}
推荐阅读
- python - 使用 for 循环编码
- c++ - 如何在打印时保持数字不变
- c# - 在 MVC Razor 中,为什么我的复选框和下拉菜单在提交时没有选择选定的值或选中的值
- excel - 如何使用选择单元格范围变量
- c++ - C++ 将字符类型转换为 int 类型
- angular - 如何更改 primeNG 列过滤器上的 dateFormat?
- python - Django 频道中的软件包安装错误
- android - 单元测试 RxJava repeatWhen 运算符总是停留在第一次迭代
- python - 如何以特定模式转换 np 数组并将其保存到二进制文件中?
- python - BeautifulSoup + Selenium,将使用 div 构建的动态表格文本发送到列表