vuex状态管理 action的问题

发布于 2022-09-11 22:55:52 字数 1730 浏览 14 评论 0

题目描述

代码如下:怎么等待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);
                            })
                        }
                    });
                })
            }
        },
    });
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

揪着可爱 2022-09-18 22:55:52

创建个promise return出去就完了

屌丝范 2022-09-18 22:55:52

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文