如何使用Promise正确捕获错误?

问题描述 投票:0回答:1

我正在学习在线课程的反应,我和老师一起有一个问题。在使用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错误。讲师似乎正确看到了错误消息。我错过了什么吗?

reactjs promise request fetch fetch-api
1个回答
0
投票

当然,您应该使用Reject语法,

const parseResponse = (response) => {
  const result = response.json().catch(() => ({}));
  if (!response.ok) {
    return Promise.reject({ code: response.status, text: response.statusText, result });
  }
  return result;
};
© www.soinside.com 2019 - 2024. All rights reserved.