api请求返回undefined

时间:2018-03-01 14:49:16

标签: rest vue.js axios

也许是一个愚蠢的问题,但是, 当我从外面打电话给api时函数总是返回undefined, 例如:

actions.js

import axios from 'axios'

export function getProducts() {
    axios.get('http://localhost:8000/api/products').then((response) => {
        return response;
    });
}

然后在一个组件中:

mounted() {
        this.products = getProducts();
        console.log(this.products);
    }

返回undefined

当然,当我从组件发出请求时,它返回结果

mounted() {
        axios.get('http://localhost:8000/api/products').then((response) => {
            this.products = response;
            console.log(this.products);
        });
    }

为什么会发生这种情况?如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

您将在response来电的then回调中返回axios.get值。但是,您的getProducts函数不会返回任何内容。

只需返回axios.get来电:

export function getProducts() {
  return axios.get('http://localhost:8000/api/products');
}

然后,getProducts的结果将是axios.get()返回的Promise。因此,您可以对then的结果添加getProducts回调,并以此方式设置this.products

mounted() {
  getProducts().then(products => this.products = products);
}