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

Javascript 异步函数-数据函数应该返回一个对象吗?,javascript,asynchronous,vuejs2,async-await,vue-component,Javascript,Asynchronous,Vuejs2,Async Await,Vue Component,为什么我们不能在数据函数中使用async,但在其他函数中可以使用async?例如: 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

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

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:

有什么想法吗?

异步
放在函数转换为返回
承诺的函数之前<代码>数据
方法必须返回
对象
,而不是
承诺

async function myFunction () { [code] }
相当于

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

我建议您删除async语句。

在函数将其转换为返回
承诺的函数之前放置
async
<代码>数据
方法必须返回
对象
,而不是
承诺

async function myFunction () { [code] }
相当于

function myFunction () { 
    return Promise(function (resolve, reject) {
        try {
            resolve((function () { [code] })());
        } catch (error) {
            reject(error);
        }
    });
}
我建议您删除异步声明