微信小程序中函数事件的执行顺序

本文介绍了微信小程序中处理登录流程时遇到的问题及解决方案。通过调整页面跳转逻辑,确保了登录验证成功后再进行页面跳转,避免了异常跳转现象。

问题描述:做页面跳转的时候,发现从登录页跳转到首页之后马上又跳转回登录页。

分析问题:微信小程序中请求与后续事件不是按照顺序执行的,而是有可能先执行后面的,之后再返回执行success函数。因此把页面跳转写进success函数里之后。问题解决。

//正确则进入五大明星产品页

              if (res.data.state === '1'){

                //获取code并发送给后台

                wx.login({

                  success:function(res){

                    if (res.code) {

                      wx.request({

                        url: 'https://wectest.com/Wechat/LoginSessionID',

                        data:{

                          code:res.code,

                          verifyID:that.data.verifyID

                        },

                        header:{

                          'content-type': 'application/json'

                        },

                        success:function(res){

                          console.log('sessionID')

                          console.log(res)

                          var sessionID = res.data.sessionID;

                          wx.setStorageSync('sessionID', sessionID)

                          if (sessionID) {

                            wx.navigateTo({

                              url: '../products/products',

                            })

                          }

                        }

                      })

                    }

                  }

                })

微信小程序的生命周期函数分为应用级、页面级和组件级,它们各自的执行顺序如下: ### 应用级生命周期函数执行顺序 应用级生命周期函数主要在 `app.js` 中定义,涉及整个小程序的生命周期。其执行顺序为: 1. `onShow`:小程序启动,或从后台进入前台显示时触发。 2. `onReady`:小程序初始化完成时触发,全局只触发一次。 3. `onHide`:小程序从前台进入后台时触发。 4. `onError`:小程序发生脚本错误,或者 API 调用失败时触发。 示例代码如下: ```javascript App({ onShow(options) { console.log('小程序启动或从后台进入前台', options); }, onReady() { console.log('小程序初始化完成'); }, onHide() { console.log('小程序从前台进入后台'); }, onError(msg) { console.log('小程序发生错误:', msg); } }) ``` ### 页面级生命周期函数执行顺序 页面级生命周期函数在每个页面的 `js` 文件中定义,涉及单个页面的生命周期。页面加载时,执行顺序为: 1. `onLoad`:页面加载时触发,一个页面只会调用一次,接收页面跳转所带来的参数。 2. `onShow`:页面显示/切入前台时触发。 3. `onReady`:页面初次渲染完成时触发,一个页面只会调用一次。 4. `onHide`:页面隐藏/切入后台时触发。 5. `onUnload`:页面卸载时触发,一个页面只会调用一次。 示例代码如下: ```javascript Page({ onLoad(options) { console.log('页面加载,传入参数:', options); }, onShow() { console.log('页面显示'); }, onReady() { console.log('页面初次渲染完成'); }, onHide() { console.log('页面隐藏'); }, onUnload() { console.log('页面卸载'); } }) ``` ### 组件级生命周期函数执行顺序 组件级生命周期函数在组件的 `js` 文件中定义,涉及组件的生命周期。组件实例化时,执行顺序为: 1. `created`:在组件实例刚刚被创建时执行。 2. `attached`:在组件实例进入页面节点树时执行。 3. `ready`:在组件布局完成后执行。 4. `moved`:在组件实例被移动到节点树另一个位置时执行。 5. `detached`:在组件实例被从页面节点树移除时执行。 示例代码如下: ```javascript Component({ lifetimes: { created() { console.log('组件实例刚刚被创建'); }, attached() { console.log('组件实例进入页面节点树'); }, ready() { console.log('组件布局完成'); }, moved() { console.log('组件实例被移动到节点树另一个位置'); }, detached() { console.log('组件实例被从页面节点树移除'); } } }) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值