Я пытаюсь найти хороший способ обработки ответов HTTP, которые я считаю ошибкой. Я использую fetch
в React Native. Вот мой код.HTTP Promise - Обработка ошибок
loginRequest(url) {
return fetch(url, {
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;'
},
....
})
.then(response => {
return this.processResponse(response);
});
}
Тогда ...
processResponse(response) {
if (response.status === 200) {
return response.json();
} else {
let error = new Error(response.status);
error.response = response.json(); // This is the problem
error.status = response.status;
throw error;
}
},
И выше, называются так:
return ApiRequests.loginRequest(username, password)
.then(json => {
dispatch(Actions.loginSuccess(json, username, password));
})
.catch(error => {
dispatch(Actions.loginFailure(error));
});
};
Идея заключается в том, что я могу легко обрабатывать все ошибки отдельно (мы предполагаем ничего, кроме 200), в пределах улова. Проблема в том, что response.json() возвращает обещание, поэтому присваивание ему ошибки. Ответ не работает. Мне нужно отслеживать код статуса http и тело ответа.
Вместо того, чтобы бросать ошибку, попытайтесь отклонить обещание может быть, как: 'Promise.reject (новый Error (response.statusText))', https: // разработчик. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject – Cherniv
Будет ли это проверено спасибо – Giannis