javascript - 如何在 vuex 的 return 语句中编写 async/await
问题描述
我最初有这个代码:
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
在上面的提交行上,这表明代码没有等待调用完成,我在这里写错了什么?
解决方案
You need to store the result of the await into the result
variable:
const result = await $api.partners.partnersList()
commit(partnersMts.PARTNERS_LIST, result.data)
推荐阅读
- c# - 在没有“从数据库更新模型...”的情况下从数据库视图中获取重命名列?
- ios - SKStoreReviewController 无法将设备时间更改为未来日期(例如提前 15 天或更长时间)
- macos - 如何使用 sed 在两个找到的部分之间返回文本?
- c - 它会在最后放置 0 或 \0 吗?
- python - 我能展示我的程序当前在做什么吗?
- c++ - std::unordered_set 迭代器似乎没有被 rehash 无效
- c# - EF6 - Update() 失败并出现多个 SaveChangeAsync,但不是多个 SaveChanges()
- clojure - 改进一个clojure函数
- regex - 在 NiFi 中用 0 替换字符串
- c - C中的简单是/否循环