问题描述
我有一个现有的方法来处理我在诺言响应中遇到的错误,如下所示:
error-handler / operations.js
const makeResourceErrorHandler = resource => error => (dispatch,getState) => {
if (error.response && error.response.status >= 300) {
error.response
.json()
.then(body => {
body.reason = error.message;
body.status = error.response.status;
dispatch(fetchError(body));
})
}
};
在Payment / operations.js中使用它
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('payment');
return promise
.then(() => {
return true;
})
.catch(error => {
dispatch(resourceErrorHandler(error));
return false;
});
现在,我想重用上面的代码并处理在eventListener中获得的响应。
profile / operations.js
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('profile');
const processEventFromEventListener = response => (dispatch) => {
const error = {};
error.response = response.data;
error.response.status = response.data.statusCode;
error.message = response.data.message;
dispatch(resourceErrorHandler(error));
}
popupwindow.jsx
window.addEventListener(
'message',function(response) {
if (response.data !== '' && typeof response.data !== 'undefined') {
dispatch(
profileOperations.processEventFromEventListener(response)
);
}
},false
);
问题是我从eventListener
获得的响应不是Response
类型,并且收到错误消息:
error.response.json is not a function
我尝试将响应更改为promise,但这给了我同样的错误:
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('profile');
const processEventFromEventListener = response => (dispatch) => {
const error = {};
error.response = response.data;
error.response.status = response.data.statusCode;
error.message = response.data.message;
Promise.resolve(error)
.then(error => {
error.response
.json()
.then(body => {
console.log('body',body);
});
dispatch(resourceErrorHandler(error));
}
TypeError: error.json is not a function
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)