【发布时间】:2020-11-07 15:22:23
【问题描述】:
创建我的 Vue 应用程序时,我调用 requestUserProfile 操作。我的目标是从 "/api/user/" 获取 api 调用,并将数据设置为调用 setUserProfile 突变之前的状态。
这里的问题是,在我获得 api 响应之后,setUserProfile 突变在我什至将数据设置为状态之前就被调用了。是否可以在触发 setUserProfile 之前完全执行 requestUserInfo ?
这是我正在使用的代码:
state() {
return {
requestUser: null,
profile: null
}
},
mutations: {
setUserInfo (state) {
apiService("/api/user/")
.then(data => {
state.requestUser = data["username"]
})
},
setUserProfile (state) {
let endpoint = "api/profile/";
if (state.requestUser) {
apiService(endpoint)
.then(data => {
state.profile = data
})
}
}
},
actions: {
async requestUserInfo ({ commit }) {
commit('setUserInfo')
},
async requestUserProfile ({ dispatch, commit }) {
await dispatch('requestUserInfo') // wait for `requestUserInfo` to finish
commit('setUserProfile')
}
},
【问题讨论】:
标签: javascript vue.js asynchronous vuex