vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue数据获取失败

Vue中的函数同步执行导致的数据获取失败问题处理办法

作者:苏生Susheng

Vue中的mount中有两个函数,第一个函数执行完后给data中的userInfo赋值,但是第二个函数获取userInfo时是空值,这种情况可能是因为第二个函数在获取 userInfo 时发生在第一个函数执行完之前,所以本文给大家介绍了Vue中的函数同步执行导致的数据获取失败问题处理办法

问题描述

原因解释

总结原因

解决办法

Promise解决

  data() {
    return {
      userInfo: null
    }
  },
  mounted() {
    const promise = new Promise((resolve, reject) => {
      // 第一个函数执行完后,给 userInfo 赋值
      resolve('Some data');
    });

    promise.then((data) => {
      this.userInfo = data;
      // 第二个函数获取到的 userInfo 就不再是空值了
      this.secondFunction();
    });
  },
  methods: {
    secondFunction() {
      console.log(this.userInfo); // 输出 'Some data'
    }
  }
});

async/await 解决

  data() {
    return {
      userInfo: null
    }
  },
  async mounted() {
    await this.firstFunction();
    await this.secondFunction();
    console.log(this.userInfo); // 输出 'Some data'
  },
  methods: {
    firstFunction() {
      return new Promise((resolve) => {
        setTimeout(() => {
          this.userInfo = 'Some data';
          resolve();
        }, 1000);
      });
    },
    secondFunction() {
      return new Promise((resolve) => {
        // 这里可以执行另一个异步操作
        resolve();
      });
    }
  }

到此这篇关于Vue中的函数同步执行导致的数据获取失败问题处理办法的文章就介绍到这了,更多相关Vue数据获取失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文