В асинхронном ожидании, где отобразить сообщение об ошибке для пользователя - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть код, как показано ниже, чтобы получить фотографию из лазурного.Когда я получаю сообщение об ошибке, что изображение недоступно, я улавливаю ошибку и записываю error.log.Однако это выглядит некрасиво.Как лучше показать это?я не могу; перенаправить как это на 404, поскольку эта ошибка не останавливает работу приложения

fetchImage = async(token) => {
        try {
          const response = await axios
            .get(`https://graph.microsoft.com/v1.0/users/${this.props.authentication._user.userName}/photo/$value`,{
              responseType: 'arraybuffer',
              headers: {'Authorization': 'Bearer ' + token}
            })

            this.setState({
              image: new Buffer(response.data).toString('base64')
            })
        }
        catch (error) {
          console.error(error)
        }
      }

1 Ответ

0 голосов
/ 20 февраля 2019

вы можете создать новую подпорку для состояния, например isError


, а затем вы можете контролировать ошибку с этой подпоркой (isError)?: «получено сообщение об ошибке»: «сохранить продолжение»

state = {
  isError: false
};

fetchImage = async token => {
  try {
    const response = await axios.get(
      `https://graph.microsoft.com/v1.0/users/${
        this.props.authentication._user.userName
      }/photo/$value`,
      {
        responseType: "arraybuffer",
        headers: { Authorization: "Bearer " + token }
      }
    );

    this.setState({
      image: new Buffer(response.data).toString("base64")
    });
  } catch (error) {
    this.setState({
      isError: true
    });
    console.error(error);
  }
};

если вам нужно сохранить сообщение об ошибке, вы можете сделать это

state = {
  error: ""
};

in the catch block 

catch (error) {
  this.setState({
    error: error.message
  });
}

and then check (this.state.error.length) ? "show error" : 'continue working'
...