为了账号安全,请及时绑定邮箱和手机立即绑定

如何在vue让this.$store.dispatch异步函数,同步执行;即注册再获取用户信息后跳转

如何在vue让this.$store.dispatch异步函数,同步执行;即注册再获取用户信息后跳转

小怪兽爱吃肉 2019-03-13 13:15:59
1.代码如下图:a.注册页里b."getUserInfo" 函数2.问题在于:有时候 this.$store.dispatch('getUserInfo')还没有执行完,导致 token 和 user_id 没有取到;就可能执行跳转。我知道是由于封装的 promise 导致的,但是不知道怎么变成同步,.then().then().catch()好像没用,而且取得数据要判断,执行不了。3.原本把注册函数也封装了,代码如下:当时的写法:this.$store.dispatch('UserRegister'); this.$store.dispatch('GetUserInfo'); this.$router.push('home')但是发现,我封装好了,不知道让它们同步执行,然后就把 'UserRegister'拆开了。所以现在想解决上面问题后,帮我再回答下面这个问题。非常感谢!
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

试一试
Promise.all([
this.$store.dispatch('登录注册'),
this.$store.dispatch('获取用户信息')
]).then( 执行跳转 )

查看完整回答
1 反对 回复 2019-03-22
?
www说

TA贡献1775条经验 获得超8个赞

把 this.$store.dispatch('getUserInfo')封装成promise返回,通过下面这样:


this.$store.dispatch('getUserInfo').then(res => {

    this.$router.push('/index');

}).catch( err => {

    console.log(err);

})


查看完整回答
反对 回复 2019-03-22
?
慕后森

TA贡献1802条经验 获得超5个赞

修改getUserInfo


getUserInfo(){

    return api....

}

然后再修改跳转逻辑


this.$store.dispatch('getUserInfo').then(res => {

    this.$router.push('/index');

})


查看完整回答
反对 回复 2019-03-22
  • 3 回答
  • 0 关注
  • 10277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信