微信小程序登录时一定概率出现-41003错误的解决方案

在按照官方的文档进行开发时,会发现小程序登录时会出现一定概率的-41003错误,大概是25%左右。
根据网上的一些参考资料,排除数据传输时的错误之后,我认可wx.login和getuserinfo顺序反了这种说法。
在需要和服务端通讯的情况下,按照常理思考的顺序应该是 点击button->获取事件中的userinfo->wx.login->后端处理
但是实际情况需要按照这个顺序 点击button->wx.login->wx.getUserInfo->后端处理
在login后再次getUserinfo确保获取的userinfo是最新的,而点击button获取到的userinfo就不用管了

getUserInfo(e) {
        var that = this
        if (e.detail.errMsg != "getUserInfo:ok") {
            wx.showModal({
                title: '登录失败',
                content: '授权登录后方可正常使用本小程序功能',
                showCancel: false
            })
            return
        }
        wx.login({
            success: res => {
                wx.getUserInfo({
                    withCredentials: true,
                    success(e) {
                        app.getData({
                            url: 'user/login/index',
                            data: {
                                code: res.code,
                                encryptedData: e.encryptedData,
                                iv: e.iv,
                            },
                            success(res){
                                wx.showToast({
                                    title: res.msg,
                                })
                                that.setData({user:res.data.user})
                            }
                        })
                    }
                })

            }, fail() {
                wx.showModal({
                    title: '登录失败',
                    content: '请尝试重新登录或重启小程序',
                    showCancel: false
                })
            }
        })
    },