vuex的getters返回函数,把异步变同步,加了async / await 无效

vuex

  getters: {
    getTest: state => {
      return async () => {
        const result = await new Promise((resolve, reject) => {
          setTimeout(function () {
            resolve('foo');
          }, 3000);
        })
        return result
      }
    }
  }

控制台运行

vue.$store.getters.getTest() // Promise {<pending>}
// 我希望他返回 `foo`

希望大佬帮我指正代码,十分感谢!

阅读 5.8k
2 个回答
getTest: state => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('foo');
    }, 3000);
  });
},
(async () => {
  const result = await this.$store.getters.getTest;
  console.log(result);//foo
})();

要获取异步函数的返回值,需在函数前加 await:

await vue.$store.getters.getTest()

再试试看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题