现有代码如下。需要store.state.auth.user有信息才next();,如果没有则执行store.dispatch("getUserInfo");为store.state.auth.user获取值。
现在的问题时当store.state.auth.user没有值时去触发getUserInfo,
怎么等getUserInfo完成user有值后再next呢?
if(!store.state.auth.user){
store.dispatch("getUserInfo");
console.log(store.state.auth.user);
next();
}
以上时我的代码
然后我看了官方的组合action代码如下
actions: {
actionA ({ commit }) {
return new Promise((resolve, reject) => {
setTimeout(() => {
commit('someMutation')
resolve()
}, 1000)
})
}
}
改下我的代码如下:
actions.js:
export const getUserInfo = (store) => {
Api.getUserInfo().then((response) => {
console.log(response);
if(response.data.code===200){
return new Promise((resolve, reject) => {
store.commit(types.USERINFO_SUCCESS, { user: response.data.object.user });
resolve()
});
}else {
return store.commit(types.USERINFO_FAILURE)
}
}, (response) => {
store.commit(types.USERINFO_FAILURE)
})
}
main.js:
if(!store.state.auth.user){
store.dispatch("getUserInfo").then(() => {
console.log(store.state.auth.user);
next();
});
}
但打印出来的store.state.auth.user一样的undefined.证明getUserInfo还没执行完就执行了以下的方法。是不是我哪里写错了?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…