我有一些史诗代码。当我收到401错误时,应该调用一个回调函数并返回一个Observable流,它将弹出一个错误模式。在IE(Internet Explorer)以外的所有浏览器中均可使用。
这是我得到的错误:
我正在使用的相关依赖项的版本:
以下是代码段:
export const epic = (action$) =>
action$.ofType(SUBMIT)
.mergeMap(action => {
return Observable.ajax({
url: `${Config.rootUrl}/${Config.apiContext.registration}/${Config.apiVersion}${Config.apiUri.captureField}`,
method: 'POST',
crossDomain: true,
headers: {
...Config.headers,
Authorization: `Bearer ${sessionStorage.getItem('token')}`,
'Correlation-Id': getUuid(),
},
body: {
saId: action.payload.args.field.replace(/[\s]/g, ''),
},
})
.map((response) => {
action.payload.callback(response);
return {
type: CAPTURE,
payload: response,
};
})
.catch(({ xhr }) => {
// IE does not come in here at all when 401 error occurs, but works with error 400, 500, etc.
action.payload.callback(xhr);
return Observable.of(errorHelper(ERROR, xhr));
});
});
奇怪的是,当发生401错误时,IE根本不运行catch语句(如代码中所注释),但是在发生其他错误400、500等时,IE却不会运行。
我该如何调试呢?