封装axios调用接口后数据获取undefined,不封装直接在需要页面获取数据的话又能拿到?

获取数据
image.png

async getAllData() {
      const data=await parameter
      console.log(data);
      // 直接获取数据
      // const data=await axios.get('http://127.0.0.1:4523/m1/3483169-0-default/parametesetion').then(
      //   response=>{
      //     console.log(response);
      //     return response.data
      //   },
      //   err=>{
      //     return err
      //   }
      // )
      this.allData = data
    },

封装的axios:
image.png
统一管理接口:
image.png

阅读 792
avatarAI BotBETA

这个问题可能是由于异步操作和Promise的原因导致的。当你使用await关键字时,它会使JavaScript等待直到Promise完成并返回其结果。在你的代码中,await parameter可能没有返回期望的数据,因此data变量为undefined

首先,请确保你的parameter返回的是一个Promise,它可能是一个axios.get()调用或其他异步操作。如果parameter不是一个Promise,那么await parameter将无法工作。

其次,你可能需要处理获取数据时可能出现的错误。你应该为parameter添加一个.catch()方法以处理任何可能的错误。如果错误发生,你应该返回一个错误对象,或者至少返回一个可以识别错误的值。

以下是修改后的代码示例:

async getAllData() {
  try {
    const data = await parameter;
    console.log(data);
    this.allData = data;
  } catch (err) {
    console.error(err);
    // 这里你可以返回一个错误对象或做其他处理
  }
}

最后,如果上述建议无法解决你的问题,你可能需要检查你的网络连接或API是否正常工作。你可以尝试直接在浏览器中访问你的API URL,看看是否可以获得预期的响应。

3 个回答

1.在api.js里面引入axios.js,不可以以xx.get的方式获取get请求,引入:import {get,post} from '@/axios.js';
2.在调用接口的组件里,不可以解构引入

const data = await parameter();
const api = {
   parameter(){
     return request.get('xxxx');
   }
}

parameter是个函数,你需要执行一下。

const data = await parameter();
推荐问题
宣传栏