Как поставить условие if с 'throw' в API-интерфейсе fetch...then

Мне нужно поставить условие if с throw внутри функции fetch - .then, чтобы проверить правильность данных ответа, но я не знаю, как это сделать.

getWeather = (latitude, longitude) => {
    const API_KEY = "";
    const api = `http://api.openweathermap.org/data/2.5/weather?lat=${latitude}&lon=${longitude}&appid=${API_KEY}`;

    fetch(api)
      .then(response => response.json())
      .then(data => { 
        this.setState({ 
          locationName: data.name,
          temperature: data.main.temp,
          weatherDescription: data.weather[0].description,
          isLoading: false, 
        })

      })
  };
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
1 385
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
fetch(api)
  .then(response => response.json())
  .then(data => { 
    this.setState({ 
      locationName: data.name,
      temperature: data.main.temp,
      weatherDescription: data.weather[0].description,
      isLoading: false, 
    })

  })
  .catch(error=> { console.info(err) });

вы можете использовать catch() с fetch API

@HuyNguyen, как это у тебя работает? вы просили "если условие с броском внутри выборки"...

Roy.B 29.05.2019 09:35

@Roy.B, может быть, я не местный, и этот парень тоже не местный (может быть, вьетнамец), так что это выглядит по-английски Проблема

kyun 29.05.2019 09:39

Так:

fetch(api)
      .then(response => response.json())
      .then(data => {     
               if (**YOUR_CONDITION_HERE**){

                  this.setState({ 
                   locationName: data.name,
                   temperature: data.main.temp,
                   weatherDescription: data.weather[0].description,
                   isLoading: false, 

               } else {

                  throw new Error("data invalid");

       }).catch(err => console.info(err));

Другие вопросы по теме