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

时间:2019-12-28 04:49:08

标签: reactjs promise request fetch fetch-api

我正在研究在线课程的反应,并且在跟教练一起学习时遇到问题。在使用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错误。讲师似乎正确看到了错误消息。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

这段代码没有错误,我发现了我的问题,因为我拼错了一个prop,导致其在呈现部分中为null,从而绕开了我的条件呈现循环。

   if (isLoading) {
    return (
        <Loading />
    );
}
else if (errMess) {
    return (
        <h4>{errMess}</h4>
    );
}

错误提示基本上为Null。 (导致errMess为空)