Метод React Native Catch in Fetch API не работает

Я пытаюсь получить некоторые данные из API и показать в своем приложении. Поэтому, чтобы обрабатывать ошибки и получать данные, я использовал ниже код.

async componentDidMount() {
let data =  await fetch('https://demo61235421.mockable.io/getDfo')
.then((response) => response.json())
.then((responseJson) => {
  this.setState({
    totOrder : responseJson.totalOrders,
  })
})
.catch((error) => {
  console.error('error')
});
return data;
}

Но когда я получаю сообщение об ошибке от API, этот код не показывает ошибку на экране Simulator. Я не знаю, почему, но экран остается прежним.

Это мой ответ JSON,

{
   "error": "Error 445"
}

проблема

  1. Почему это не поймает ошибку? Что мне не хватает?
  2. Как я знаю, поскольку ответ JSON содержит идентификатор, называемый «ошибка», это должно работать. Я прав?

ОБНОВИТЬ

После изменения кода на следующий, все еще не отображается.

async componentDidMount()
{
  try
  {
    let data =  await fetch('https://demo64533421.mockable.io/getDfo');
    let responseJson = await data.json();
    this.setState({
      Data : true,
      totOrder : responseJson.totalOrders,
    })
  }
  catch(error) 
  {
    console.error(error)
  }

}

Кроме того, статус ответа установлен в 500 (Inernal Server Error)код.

javascript,json,react-native,

1

Ответов: 2


1

Вы используете async / wait. Вам не нужно «тогда» и «поймать». Цель использования функций обратного вызова (then / catch) заключается в асинхронном поведении, когда 'fetch' будет асинхронным. Однако, когда вы говорите «ждите», он ждет возвращения результата из выборки.

Вы должны сделать это следующим образом:

async componentDidMount() {
   try {
      let data =  await fetch('https://demo61235421.mockable.io/getDfo')
      // Do success scenarios here.
   }catch(err){
      // Perform error handling here
   }
}

0

Для API выборки статус, возвращаемый сервером, также имеет, по моему опыту, если это не коды состояния ошибок на основе HTTP (например, 404, 500), тогда ошибка не может быть выбрана.

JavaScript, JSON, реагируют родной,
Похожие вопросы