sdgpsaf 2021-12-24 11:54 采纳率: 85.7%
浏览 402
已结题

axios发请求获得的返回值怎么存到data里?

问题相关代码,请勿粘贴截图
import axios from "axios";
export default {
  data() {
    return {
      obj: {},
    };
  },
  created() {
    this.start();
    this.end();
  },
  methods: {
    findList(method, url) {
      return axios({
        method: method,
        url: url,
      });
    },
start() {
      var that = this;
      this.findList("get", "xxxxxxxxx").then(
        function (res) {
          var aaa = JSON.parse(res.data.monitdatas);
          that.obj = aaa;
          console.log(aaa);
        }
      );
    },
    end() {
      console.log(this.obj);
    },
  },
};
运行结果及报错内容

img

上面一行是在end里打印的,下面一行是在start里打印的
在.then()里有返回值能拿到对象,但是在外面打印还是空对象,我想在外面操作这些数据,就必须在.then里面么?
  • 写回答

4条回答 默认 最新

  • 崽崽的谷雨 2021-12-24 12:18
    关注

    你现在写的就没问题 。 因为 接口需要 时间 是异步 的 先 运行了end再 运行的atart 。 如果想 end和start输出一样 。在dtart 运行end.

    function (res) {
              var aaa = JSON.parse(res.data.monitdatas);
              that.obj = aaa;
    this.end();
              console.log(aaa);
            }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 前端小悸动 2021-12-24 12:02
    关注

    是 this.obj = aaa;

    评论
  • 优秀的胡茬 2021-12-24 12:07
    关注

    这个应该是因为前端代码顺序执行导致start未获得返回结果end先执行了,axios的话可以试一下设置 async: false 同步请求会等待后台请求响应后再往下执行

    评论
  • 几何心凉 2022年度博客之星前端领域TOP 1 2021-12-24 13:43
    关注

    就是你这样去接收,之所以end函数中的输出为空时因为请求接口是异步 你把this.end();这个调用放到上面的.then中的函数中就行了

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 12月24日

悬赏问题

  • ¥15 Unity导出2D项目运行时图片变成马赛克
  • ¥15 关于communitytoolkit.mvvm的生成器得到的代码看起来没有被使用的问题
  • ¥15 matlab中此类型的变量不支持使用点进行索引
  • ¥15 咨询第六届工业互联网数据创新大赛原始数据
  • ¥15 Pycharm无法自动补全,识别第三方库函数接收的参数!
  • ¥15 STM32U575 pwm和DMA输出的波形少一段
  • ¥30 android百度地图SDK海量点显示标题
  • ¥15 windows导入environment.yml运行conda env create -f environment_win.yml命令报错
  • ¥15 这段代码可以正常运行,打包后无法执行,在执行for内容之前一直不断弹窗,请修改调整
  • ¥15 C语言判断有向图是否存在环路