api 请求返回未定义

Posted

技术标签:

【中文标题】api 请求返回未定义【英文标题】:api request returns undefined 【发布时间】:2018-08-09 16:09:24 【问题描述】:

也许是个愚蠢的问题,但是, 当我从“外部”函数调用 api 时,它总是返回未定义, 例如:

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);
    

返回未定义

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

只需返回axios.get 调用:

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

那么,getProducts 的结果将是axios.get() 返回的Promise。因此,您可以在getProducts 的结果上添加一个then 回调,然后将this.products 设置为这样:

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

【讨论】:

@null,哇,我真的想多了。我用一个更简单的解决方案编辑了我的答案。

以上是关于api 请求返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

异步/等待,XHR 请求后返回的变量未定义

在api请求准备好之前无法弄清楚如何跳过查询,因此它不会在带有useSWR的apollo useQuery中返回未定义的变量

未捕获的 ReferenceError:未定义请求

为啥我的 api ajax 请求未定义?

函数返回未定义而不是请求的结果

NodeJS RESTful API - 如何正确处理“未定义”请求变量?