如何简化这段代码?在请求服务器获取数据之前,我需要请求获取令牌。然后将此令牌写入localstorage,以免重新调用对令牌的请求。
if (localStorage.getItem('token')) {
axios.defaults.headers.common["Authorization"] = localStorage.getItem("token");
axios.post(`${BASE_URL}/json/em/pos/poses`, {
limit,
offset,
contractType: 0,
...filter,
})
.then((res) => {
dispatch(reducerGetOutlets({data: res.data, limit, offset: 0}));
});
} else {
axios(`${process.env.REACT_APP_BASE_URL}/api/user/info`)
.then((response) => {
axios.defaults.headers.common["Authorization"] = "Basic " + response.data.token;
localStorage.setItem("token", "Basic " + response.data.token);
axios.post(`${BASE_URL}/json/em/pos/poses`, {
limit,
offset,
contractType: 0,
...filter,
})
.then((res) => {
dispatch(reducerGetOutlets({data: res.data, limit, offset: 0}));
});
})
}
1条答案
按热度按时间x759pob21#
你可以做一些事情来简化这段代码:
1.使用
async/await
语法进行API调用,而不是回调1.将代码拆分为更小的函数。
例如:
在这里你得到两个函数:
getToken()
和fetchData()
。getToken()
函数检查令牌是否在localStorage
中,如果不是,则请求获取令牌并将其写入localStorage
。fetchData()
函数等待来自getToken()
的令牌,设置Authorization
报头并发出请求。希望这能帮上忙。