Контекст
Я собираюсь использовать Обещания до Асинхронное / Ожидание для одного из моих запросов (который я использую внутри Vuex action , но это не обязательно для понимания моей проблемы).
Используя приведенный ниже код, я могу предоставить конечному пользователю сообщение об ошибке в зависимости отКод состояния моего ответа на случай, если запрос не удался.
fetch("http://localhost:8000/api/v1/book", {
headers: {
Accept: "application/json"
}
}).then(response => {
if (!response.ok) {
if (response.status === 429) {
// displaying "wow, slow down mate"
} else if (response.status === 403) {
// displaying "hm, what about no?"
} else {
// displaying "dunno what happened \_(ツ)_/¯"
}
throw new Error(response);
} else {
return response.json();
}
}).then(books => {
// storing my books in my Vuex store
})
.catch(error => {
// storing my error onto Sentry
});
Проблема
Использование async/await
, вот как мой код выглядит сейчас:
try {
const response = await fetch("http://localhost:8000/api/v1/book", {
headers: {
Accept: "application/json"
}
});
const books = await response.json();
// storing my books
} catch(exception) {
// storing my error onto Sentry
}
Вопрос
Как определить, какой код состояния был возвращен в моем ответе в случае сбоя при использовании async/await
?
Если я использую это неправильно, просто не стесняйтесь исправить меня с лучшим рисунком.
Примечания
Я сделалJSFiddle, чтобы проверить проблему вживую.Не стесняйтесь обновлять его.
https://jsfiddle.net/180ruamk/