У меня есть звонок async
fetch
, который вызывает мой бэкэнд, чтобы создать клиента с адресом электронной почты. В случае успеха возвращаемый JSON отправляется функции doNextThing()
.
Если бэкэнд возвращает код состояния, отличный от 200, он также возвращает JSON, как {"message": "Something went wrong"}
. Я хочу catch
сообщить об ошибке и отправить это сообщение console
.
. Я прочитал десятки слегка похожих вопросов и приблизился к ответу. Пока что у меня есть следующее, но если ответ бэкэнда был, например, кодом состояния 403
, то консоль выдает «ЗАПРЕЩЕНО». Я думаю это потому, что обещание еще не выполнено, поэтому еще не получил полного ответа JSON. Или что-то. Но я не могу понять, что мне не хватает.
async function createCustomer(email) {
return fetch("/api/create-customer", {
method: "post",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({email: email})
})
.then(function(response) {
if (response.ok) {
return response.json();
} else {
return Promise.reject({
status: response.status,
statusText: response.statusText
});
}
})
.then(function(returned_data) {
doNextThing(returned_data);
})
.catch(function(e) {
console.error(e.statusText);
});
}