异步函数-数据函数应该返回一个对象吗?

时间:2019-02-20 19:01:54

标签: javascript asynchronous vuejs2 async-await vue-component

为什么我们不能在数据功能中使用异步,但在其他功能中可以使用?例如:

export default {
  data: async function () { // not ok
    return {
      item: null,
    }
  },
  beforeMount: async function() { // this is ok
    let result = await axios.get('./data-social.json')
    this.item = result.data
  },
  mounted() {
  },
}

我会收到此错误:

[Vue warn]: data functions should return an object:

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在函数前放置async会将其转换为返回Promise的函数。 data方法必须返回object,而不是Promise

async function myFunction () { [code] }

等效于

function myFunction () { 
    return Promise(function (resolve, reject) {
        try {
            resolve((function () { [code] })());
        } catch (error) {
            reject(error);
        }
    });
}

我建议您删除异步指令。