我正在学习在线课程的反应,我和老师一起有一个问题。在使用promise处理从服务器检索数据的错误时,我有以下代码将操作分派到我的商店:
export const fetchPromos = () => (dispatch) => {
dispatch(promosLoading());
return fetch(baseUrl + 'promotions')
.then(response => {
if (response.ok) {
return response;
} else {
var error = new Error('Error ' + response.status + ': ' + response.statusText);
error.response = response;
throw error;
}
},
error => {
var errmess = new Error(error.message);
throw errmess;
})
.then(response => response.json())
.then(promos => dispatch(addPromos(promos)))
.catch(error => dispatch(promosFailed(error.message)));
}
[我关闭json服务器或有意从服务器请求错误的资源并重新加载我的应用程序后,在浏览器中而不是我定义的错误中出现了UnHandled Rejection错误。讲师似乎正确看到了错误消息。我错过了什么吗?
当然,您应该使用Reject语法,
const parseResponse = (response) => {
const result = response.json().catch(() => ({}));
if (!response.ok) {
return Promise.reject({ code: response.status, text: response.statusText, result });
}
return result;
};