在Axios通话之外无法获得价值

时间:2019-06-25 18:02:33

标签: javascript vue.js axios

我希望您能解决axios遇到的问题。

我只是想在通话之外获得价值,但我无法使其发挥作用。这是一段小代码:

 axios.get('/api/get-user').then(({ data }) => {
            this.user = data;
            console.log(this.user); //returns the correct data
            return this.user;
        });

        console.log(this.user); //returns null

这是怎么回事?我也尝试过let self = this,但无济于事。我希望你们能帮助我!

1 个答案:

答案 0 :(得分:7)

这是异步的问题,您正在axios请求完成之前调用console.log。这就是为什么我们使用.then(res => {})。

一种替代方法是使用异步等待。

用异步装饰父函数

const myFunction = async() => {
    const {data} = await axios.get('/api/get-user');
    this.user = data;
    console.log(this.user);
}

有关详细信息,请参见MDN。此链接是示例(我认为对理解最有帮助)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function#Examples