关于微信小程序执行顺序问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于微信小程序执行顺序问题相关的知识,希望对你有一定的参考价值。

最近在研究微信小程序,由于本人没有js基础,所以对js里函数异步执行很是无力。我在app.js里的wx.login与后台交互了一下,但由于是网络请求,所以导致还没获取返回数据的时候就执行了index.js里的onloud,刚刚发现了模板代码里获取用户信息有这么一段,
wx.getUserInfo(
success: res =>
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo

// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback)
this.userInfoReadyCallback(res)


)
貌似是解决这个问题的,但我不是看得太明白,希望有大佬能给我解决一下。

// app.js
....
doLogin() 
    if (!wx.getStorageSync("userid") && !wx.getStorageSync("token")) 
        // 登录
        wx.login(
            success: res => 
                //自己的后台
                http.post(
                    url: "/xxxxxx",
                        params: 
                        code: res.code
                    ,
                    success: (data) => 
                        this.globalData.userInfo = data.userInfo
                        wx.setStorageSync("userid", data.userid);
                        wx.setStorageSync("token", data.token);
                    ,
                    error: (data) => 
                    
                )
            
        )
    
,
....
//这个方法就是,用个定时器,
afterLogin(that, call) 
    this.loading(that);//菊花图loading组件
    if (this.globalData.userInfo) 
        call()
     else 
        var count = 0;
        var t = setInterval(() => 
        if (this.globalData.userInfo) 
            clearInterval(t)
            call();
         else 
            if (count >= 300)  // 30s未成功则登录失败
                clearInterval(t)
                this.loading(that);//菊花图loading组件
                //提示框方法
                this.msg.showToast(that, "获取登录信息失败")
            
            count++;
        
        , 100)
    
,
....
//index.js
var app = getApp()
...
onLoad: function (options) 
    app.afterLogin(this, () => 
        //这里放,你要在登录后做的事
    )
,
...

这样能解决不?也是看别人的代码,就是用计时器setInterval每隔100毫秒执行一次,看看登录信息拿到没有,拿到了,在进行后续操作。

参考技术A 可以在index.js里的onload执行微信登录,登录成功后再用回调函数或promise执行其他

微信小程序-关于重定向问题

关于微信的重定向问题

wx.redirectTo(OBJECT)

参数

参数类型必填说明
url 需要跳转的应用内页面的路径
成功 功能 接口调用成功的回调函数
失败 功能 接口调用失败的回调函数
完成 功能 接口调用结束的回调函数(调用成功,失败都会执行)

 

示例

wx.redirectTo({
  url: ‘test?id=1‘
})

//url 如果不是跳当前路径 使用 ‘/xx/xx‘ 方式

  

以上是关于关于微信小程序执行顺序问题的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序data数据获取问题

微信小程序:渲染流程、生命周期和触发顺序

微信小程序关于swiper问题求助

关于微信小程序云开发----手机端真机调试

微信小程序多张图片上传阿里云时如何做到顺序上传

微信小程序获取openid异步问题 有时候获取不到问题