У меня есть функция стрелки, которая возвращает некоторые данные из вызова API. я хочу обернуть его внутри блока try catch, например
const fetchEmployees = () => (
try{
fetch('http://localhost:6873/api/values', {
method: 'GET',
headers: {
'content-type': 'application/json'
}
})
.then(response => response.json())
.then(names => { return names })
} catch (error) {
return error;
}
)
Как я мог это сделать? У меня отлично работает функция стрелки:
const fetchEmployees = () => (
fetch('http://localhost:6873/api/values', {
method: 'GET',
headers: {
'content-type': 'application/json'
}
})
.then(response => response.json())
.then(names => names )
)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте использовать async/await
const fetchEmployees = async () => {
try {
let response = await fetch('http://localhost:6873/api/values', {
method: 'GET',
headers: {
'content-type': 'application/json'
}
});
let json = await response.json();
return json;
} catch (error) {
return error
}
}Превратите свою функцию в функцию async:
const fetchEmployees = async () => {
try {
const response = await fetch("http://localhost:6873/api/values", {
method: "GET",
headers: {
"content-type": "application/json"
}
});
const names = await response.json();
return names;
} catch (error) {
return error;
}
};
Вы не можете использовать try catch для fetch, потому что fetch является асинхронным, а try catch — синхронным. Поэтому ваша попытка поймать всегда будет проходить. если мы предполагаем, что вы получили ответ, а .json() терпит неудачу, во втором, то первый параметр - это функция успеха, вторая - функция сбоя, которая выполняется, когда .json() терпит неудачу
const fetchEmployees = () => (
fetch('http://localhost:6873/api/values', {
method: 'GET',
headers: {
'content-type': 'application/json'
}
})
.then(response => response.json())
.then(names => names, error => "json failed" )
)
fetchEmployees().then(success => {}, error => {})
Таким образом, когда вы вызываете fetchEmployees, первая функция будет выполнена, если все пройдет успешно, в противном случае вторая будет выполнена с ответом об ошибке, в этом случае жестко закодированная строка «json failed»