Javascript-等待获取响应

时间:2020-02-23 17:03:14

标签: javascript

我有一个React-Native应用程序,安装组件时,我想通过在我们的服务类中调用一个方法来获取数据,等待该数据返回,然后在setState({})中设置该数据。但是setState({})在返回数据之前被调用。

//组件类

componentDidMount(){
   this.getData();
}

async getData() {
    const data = await MyService.getData();
    this.setState({
        blah:data //undefined
    });
}

//服务类

let MyService = {
    getData:function(){
        axios.get(url)

    .then(response => response.data)
    .then((data) => {
            //do stuff
          return data;//need to set this to state back in component class
     })
     .catch(error => {
            console.log(error);
     });   
      }
}

module.exports = MyService;

1 个答案:

答案 0 :(得分:1)

您必须返回February呼叫。否则,axios.get将返回一个空的承诺(带有async function值的承诺)。

undefined

如果您返回此axios调用,则它本身就是一个承诺,您不必等到解决就可以,因此无需使用let MyService = { getData: function() { return axios.get(url) .then(response => response.data) .then((data) => { // do stuff return data; // need to set this to state back in component class }) .catch(error => { console.log(error); }); } }