Я использую Перекрестная выборка для вызовов API ReactJS
Есть ли способ захватить 400, 401 и 403 в ответе на выборку.
Вот пример кода использования выборки
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => response.json())
.then(json => console.info(json))



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


Вы можете проверить код состояния в обратном вызове, предоставленном первому then:
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
})
.then(response => {
if ([400, 401, 403].includes(response.status)) {
throw new Error('Response status was 400, 401, or 403!');
}
return response.json();
})
.then(json => console.info(json))
.catch(error => console.error(error))
Это не сработало, как ожидалось. Это не показало сообщение. получил ошибку 400 на консоли не по коду.
@Selvin Это работает, когда я пробую. Вы уверены, что тестируете правильный код? Я обновил ответ, указав способ выдачи ошибки, и вместо этого зарегистрирую его в catch.
это должно сработать, оно используется точно так же, как и в первом примере Прочти меня. Если он не делает то, что вы хотите, это либо потому, что вам неясно, что вы хотите, либо вы делаете что-то в другом месте своего кода, что нарушает этот пример.
попытался с обновленным кодом получить ошибку, например Network request failed при улове
@Selvin Тогда это что-то еще, что делает запрос неуспешным. Обратный вызов then никогда не запускается.
@Tholle Если это 200, то then работает. если это 400, то catch работает
Попробуй добавить в первый
then:.then(response => { if (response.status===400) { console.info('status 400'); } return response.json() }