vuex状态管理 action的问题

题目描述

代码如下:怎么等待action这些操作都完成之后,再执行vue组件中的异步函数

题目来源及自己的思路

问题来源于正在开发的项目

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
const actions = {

async login({ commit }, userInfo) {
    my.getAuthCode({
        scopes: 'auth_user', // 主动授权:auth_user,静默授权:auth_base。或者其它scope
        success: (res) => {
            if (res.authCode) {
                return  Vue.prototype.$http.getToken(res.authCode).then(result => {
                    return result
                }).then(result=>{
                    my.getAuthUserInfo({
                        success: (userInfo) => {
                            commit( 'ALIUSERID' , result.data.userId);
                            commit('AVATAR', userInfo.avatar);
                            commit('NICKNAME', userInfo.nickName);
                            var _data = {
                                nick: userInfo.nickName ? userInfo.nickName : '',
                                ico: userInfo.avatar ? userInfo.avatar : '',
                                aliUserId: result.data.userId,
                                noLoginType: 4,
                                device: 'ali-mini-program',
                            }
                            Vue.prototype.$http.postLogin(_data).then(res => {
                                var userCname = res.userinfo.username;
                                var userPhone = res.userinfo.phone;
                                commit('USERID', userCname);
                                commit('USERPHONE', userPhone);
                            })
                        }
                    });
                })
            }
        },
    });
}

}

阅读 2.4k
2 个回答

创建个promise return出去就完了

你用了async为啥不用await呢。
把你的my.getAuthCode与my.getAuthUserInfo改成promise
然后login成async await 就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题