如何在 setState 之前用 unirest 调用 api

How to call api with unirest before setState

在我的 componentDidMount 中,我调用了随机引号 api 并且它正确地显示在控制台上。然后我调用 set state,但是在 unirest 调用 api 之前调用 set state。我如何才能等到 api 调用完成才能调用 setState?

  state = {
    quote: '',
    author: '',
    category: ''
  }

  componentDidMount() {
    let data = [];
    unirest.get("https://andruxnet-random-famous-quotes.p.mashape.com/?cat=famous&count=2")
    .header("X-Mashape-Key", Mashable_Key)
    .header("X-Mashape-Host", "andruxnet-random-famous-quotes.p.mashape.com")
    .end(function (result) {
      data = result.body[0];
      console.log(data)
    })

    this.setState({
      quote: data.quote,
      author: data.author,
      category: data.category
    })

   console.log(this.state)

  }

你可以在API得到结果后调用setState,请看下面的代码: componentDidMount() { let data = []; unirest.get("https://andruxnet-random-famous-quotes.p.mashape.com/?cat=famous&count=2") .header("X-Mashape-Key", Mashable_Key) .header("X-Mashape-Host", "andruxnet-random-famous-quotes.p.mashape.com") .end(function (result) { data = result.body[0]; console.log(data) this.setState({ quote: data.quote, author: data.author, category: data.category }) }) }