gpt4 book ai didi

javascript - 如何在 API 调用中使用 axios 在 React 中使用 async wait

转载 作者:行者123 更新时间:2023-11-28 17:12:19 25 4
gpt4 key购买 nike

我是网络开发新手。我正在使用 react.js。所以,这里我想使用 async/await 进行 API 调用。我正在使用 axios。

现在,

我所拥有的是这样的

export function fetchToken(bodyjson) {
return (dispatch) => {
let url = LOGIN_PATH + "username=" + bodyjson.userName + "&password" + "=" + bodyjson.password;
return post(url, bodyjson)
.then((response) => {
if (response.status === 200) {
localStorage.setItem('user', bodyjson.userName);
localStorage.setItem('access_token', response.payload.access_token);
history.push('/');
dispatch({
type: LOGIN_SUCCESS,
data: response.payload,
})
}
else {
dispatch({
type: LOGIN_FAILED,
data: response.status,
});
}
})
}
}

我的邮政服务就像,

export const post = (url, post_data) =>
axios.post(
apiGatewayEndpoint.apiGatewayEndpoint + url,
post_data,
{
headers: {
"Authorization": localStorage.getItem("access_token") !== null ? `Bearer ` + localStorage.getItem("access_token") : null,
"Content-Type": "application/json"
}
}
).then(data => {
if (data.status === HttpStatus.OK) {
return {
status: data.status,
payload: data.data
};
}
}).catch(err => {
return {
status: err.response.data,
payload: null
};
});

现在,我想在这里使用异步等待。我对此很困惑。我已经阅读了很多教程。 我想在登录后立即调用API。在此基础上,我想将用户重定向到差异页面。

那么,谁能帮我解决这个async-await

谢谢:-)

现在我正在使用它,

export function fetchToken(bodyjson) {
return async (dispatch) => {
let url = LOGIN_PATH + "username=" + bodyjson.userName + "&password" + "=" + bodyjson.password;
let response = await post(url, bodyjson)
if (response.status === 200) {
localStorage.setItem('user', bodyjson.userName);
localStorage.setItem('access_token', response.payload.access_token);
let fetchJd = FETCH_JD_ROOT_URL + page + "&" + size;
let newApiResponse = await get(fetchJd)
if (newApiResponse.status === 200) {
dispatch({
type: LOGIN_SUCCESS,
data: response.payload,
})
dispatch(sendUserJd(newApiResponse.payload));
}else {
dispatch({
type: LOGIN_FAILED,
data: response.status,
});
}

}
else {
dispatch({
type: LOGIN_FAILED,
data: response.status,
});
}
}

最佳答案

对于获取请求,您可以使用参数来发送数据等。

   export const getData = async () => {
try {
const { data } = await axios({
method: 'get', //you can set what request you want to be
url: `yoururl`,
params: {
// key values pairs
}
headers: {
'token': token
}
});
// run some validation before returning
return data;
} catch (e) {
console.log(e);
return .. some error object;
}
};

用于发布请求

export const getData = async (params) => {
try {
const { data } = await axios({
method: 'post', //you can set what request you want to be
url: `url`,
data: params,
headers: {
'x-auth-Token': token
}
});
// run some validation before returning
return data;
} catch (e) {
console.log(e);
return .. some error object;
}
};

错误对象示例

{
status: 'error',
message: 'failed with something'
}

然后你可以像这样调用任何api,

async componentDidMount() {
const data = await getData();
if(data.status === 'Something') {
// do something
}
}

关于javascript - 如何在 API 调用中使用 axios 在 React 中使用 async wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54124947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com