如何在vuex的return语句中编写异步/等待

时间:2019-06-26 06:41:45

标签: javascript vue.js vuejs2 vuex

我最初有以下代码:

export function InitActions($api) {
  return {
    [partnersMts.PARTNERS_LIST]({commit, state}) {
      if (!state.partnersList || state.partnersList.length === 0) {
        $api.partners.partnersList().then(result => {
          commit(partnersMts.PARTNERS_LIST, result.data);
        });
      }
    }
  }
}

我正在尝试使用async / await重写它,我尝试过:

export function InitActions($api) {
  return {
    async [partnersMts.PARTNERS_LIST]({commit, state}) {
      if (!state.partnersList || state.partnersList.length === 0) {
        await $api.partners.partnersList()
        commit(partnersMts.PARTNERS_LIST, result.data);
      }
    },
   }
}

但是我得到一个错误:Uncaught (in promise) ReferenceError: result is not defined 在上面的提交行上,这表明代码没有等待调用完成,我在这里写错了什么?

1 个答案:

答案 0 :(得分:0)

您需要将等待结果存储到result变量中:

const result = await $api.partners.partnersList()
commit(partnersMts.PARTNERS_LIST, result.data)