sách gpt4 ai đã đi

reactjs - Reactjs 中的递归操作调用

In lại 作者:行者123 更新时间:2023-12-05 03:05:23 37 4
mua khóa gpt4 Nike

我有一个实现刷新授权 token 的方案。在这种情况下,我为每种操作(发布、获取、删除)实现了一个通用操作,并使用参数调用它们。

export function Get(param) {
return function (dispatch) {
var query = param ? !!param.Query ? param.Query : "" : "";
var funtionName = param ? param.FunctionName : "";
var url = endPointUrl + funtionName;
var offset = param.Offset ? param.Offset : "0";
var limit = param.Limit ? param.Limit : "10";
const config = { headers: { 'Authorization': 'Bearer ' + sessionStorage.getItem('access-token') } };
return new Promise((resolve, reject) => {
axios.get(url, config).then((response) => {
dispatch({ type: 'FETCH_SUCCEED_' + param.Caller, payload: response.data })
resolve(response.data);
}).catch((error) => {
if (error.request.status == "401" && error.request.statusText == "RB.Exception.TokenExpiredException") {
refreshToken().then(() => {
dispatch(Get(param));
});
}
else {
dispatch({ type: 'FETCH_ERROR_' + param.Caller, payload: error })
reject(error);
}

})
})
}

每当我收到 TokenExpiredException 时,我都会调用 refreshToken() 然后再次调用当前操作(递归),因此我不能在我的组件中使用“then”。你对使用“promise”或“then”有什么解决办法吗? Action 完成后,我需要在组件中呈现一些消息。

1 Câu trả lời

是这样的吗?

export function Get(param) {
return function (dispatch) {
var query = param ? !!param.Query ? param.Query : "" : "";
var funtionName = param ? param.FunctionName : "";
var url = endPointUrl + funtionName;
var offset = param.Offset ? param.Offset : "0";
var limit = param.Limit ? param.Limit : "10";
const config = { headers: { 'Authorization': 'Bearer ' + sessionStorage.getItem('access-token') } };
return new Promise((resolve, reject) => {
axios.get(url, config).then((response) => {
dispatch({ type: 'FETCH_SUCCEED_' + param.Caller, payload: response.data })
resolve(response.data);
}).catch((error) => {
if (error.request.status == "401" && error.request.statusText == "RB.Exception.TokenExpiredException") {
resolve(withRefresh(dispatch, param));
}
else {
dispatch({ type: 'FETCH_ERROR_' + param.Caller, payload: error })
reject(error);
}

})
})
}
}

function withRefresh(dispatch, param) {
return refreshToken().then(() => {
return dispatch(Get(param));
});
}

关于reactjs - Reactjs 中的递归操作调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041318/

37 4 0
Bài viết được đề xuất: r - 在 ggplot2 中使用 Unicode 字符(加减号)
Bài viết được đề xuất: r - 为什么我的图表没有显示在 RStudio 的 "Plots" Pane 中?
Bài viết được đề xuất: css - React Native Animated 基于多个值插入不透明度
Bài viết được đề xuất: TOTP : Do the seconds count?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com