Reactjs 重用和重写方法以适应类型响应和其他对象

Reactjs 重用和重写方法以适应类型响应和其他对象,reactjs,promise,dispatch,Reactjs,Promise,Dispatch,我有一个现有的方法来处理承诺响应中的错误,如下所示: 错误处理程序/operations.js const makeResourceErrorHandler = resource => error => (dispatch, getState) => { if (error.response && error.response.status >= 300) { error.response .json()

我有一个现有的方法来处理承诺响应中的错误,如下所示:

错误处理程序/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));
        })
    }
};
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('payment');

return promise
     .then(() => {
         return true;
     })
     .catch(error => {
         dispatch(resourceErrorHandler(error));
         return false;
     });
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));
}
在payment/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));
        })
    }
};
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('payment');

return promise
     .then(() => {
         return true;
     })
     .catch(error => {
         dispatch(resourceErrorHandler(error));
         return false;
     });
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));
}
现在,我想重用上面的代码并处理我在eventListener中得到的响应

profile/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));
        })
    }
};
const resourceErrorHandler = errorHandlerOperations.makeResourceErrorHandler('payment');

return promise
     .then(() => {
         return true;
     })
     .catch(error => {
         dispatch(resourceErrorHandler(error));
         return false;
     });
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
我尝试将响应更改为“承诺”,但它给了我相同的错误:

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