У меня есть асинхронный вызов API, при котором второй блок .catch не выполняется.
Во-первых, я определил основную функцию вызова API в файле utils следующим образом:
const getCustomer= (body) => {
return new Promise(resolve => {
fetch('/getCustomer', {
method: 'post',
body: JSON.stringify(body),
headers: {
Accept: "application/json"
Content-type: "application/json"
- },
})
.then(response => response.json())
.then(json => resolve(json))
.catch(err => console.log('error happened', err))
})
};
Позже в моем файле JSX я вызываю API, импортируя указанную выше функцию.
getCustomer(myPayload).then(res => {
setCustomer(res)
}).catch(err => {
setShowError(true)
})
Что я пытаюсь сделать, так это показать сообщение об ошибке с помощью setShowError, но по какой-то причине я вижу только console.log('error happened', err)
, выбрасываемое из папки utils, где я определяю свою функцию выборки.
Любая идея о том, как я могу исправить это поведение и выполнить функцию catch
Это недействительный JS; не будет компилироваться как есть. Пожалуйста, включите ваш фактический код.
кто-то уже дал мне ответ
Да, я знаю. Это не означает, что код не должен быть настоящим кодом.
Друг мой, что, если я не хочу делиться своим настоящим кодом?? Я просто изменил имена, вот и все.
... Приведенный код должен быть синтаксически правильным. Это позволяет избежать попадания людей в ненужную кроличью нору. Для этого есть причина — чем ближе код к работоспособному, тем меньше людей должны думать о нем. Это помогает людям помогать вам и является хорошей привычкой.
См. страницу Как задать вопрос. Задавая вопрос о проблеме, вызванной вашим кодом, вы получите гораздо лучшие ответы, если предоставите код, который люди могут использовать для воспроизведения проблемы.
вам нужно выдать ошибку из блока catch метода выборки.