精华内容
下载资源
问答
  • 微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题

    微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题

    参考文章:

    (1)微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题

    (2)https://www.cnblogs.com/wq1992/p/10438325.html


    备忘一下。


    展开全文
  • 主要介绍了微信小程序onLaunch异步,首页onLoad先执行? 文章底部给大家介绍了小程序_onLaunch异步回调数据加载问题的两种解决方案,需要的朋友可以参考下
  • 那么问题就来了,我每次进入小程序首页的时候有时候会先执行onlaunch方法,有时又会先执行首页的onload的方法,最后经过确定,在微信小程序中这两个方法并没有执行先后的顺序,因为他们都是异步执行的。当然开发过...
  • 本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求获取是否有权限,等待返回值的时候Page里的onLoad事件就已经执行了。   //app.js App({ onLaunch: ...
  • 小程序初始化: 首先触发App里的onLaunch ...小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload, 我们希望onLaunch执行完后再执行onload。 目标: onL...

    小程序初始化:

    首先触发App里的onLaunch
    再执行页面Page里的onLoad:
    

    问题: 在onLaunch里请求去获取是否有权限,等待返回值的时候, Page里的onLoad事件就已经执行.

    小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload, 我们希望onLaunch执行完后再执行onload。
    目标: onLaunch 请求完 -> 再执行Page的onLoad方法
    解决方法:定义回调函数

    //app.js
     
    App({
      onLaunch: function () {
        wx.request({
          url: 'http://test.cn/login', //仅为示例,并非真实的接口地址
          data: {},
          success: function(res) {
            this.globalData.checkLogin = true;
            //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (this.checkLoginReadyCallback){
               this.checkLoginReadyCallback(res);
            }
          }
        })
      },
      globalData: {
        checkLogin: false
      }
    })
     
     
    //index.js
    //获取应用实例
    const app = getApp()
     
    Page({
      data: {
        test: false
      },
      onLoad: function () {
        let that = this;
        //判断onLaunch是否执行完毕
        if (app.globalData.checkLogin){
          that.setData({
            test:true
          })
        }else{
          app.checkLoginReadyCallback = res => {
            that.setData({
              test:true
            })
          };
        }
      }
    })
    
    

    执行顺序:[App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback-> [Page] onLoad

    展开全文
  • 微信小程序 onLaunch onLoad onShow异步

    千次阅读 2018-10-19 16:15:54
    小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里执行用户登录,等待返回值的时候Page里的onLoad事件就已经执行了。 原代码段 app.js代码片. globalData = { userInfo: ...

    小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad或onShow,但是在onLaunch里执行用户登录,等待返回值的时候Page里的onLoad或onShow事件就已经执行了。

    原代码段
    app.js代码片.

      globalData = {
        userInfo: null,
        token:''
      }
      onLaunch() {
        this.$interceptors = {
          request: {
            config(p) {
              p.url = 'http://test.xxx.com/api' + p.url
              if(this.globalData.token && this.globalData.token != ''){
                 p.header = {
                  token: this.globalData.token
                };
              }
              return p;
            },
            success(rst) {
              return rst;
            }
          }
        };
        this.login();
      }
        login() {
        const self = this;
        wx.login({
          success(data) {
            wepy.request({
              url: '/user/login?code='+data.code,
              success: function(res) {
                  wx.setStorageSync('userInfo', res.data.obj);
                  self.globalData.token=res.data.obj.token ;  
              }
        });
      }
    

    index.js代码片段

      onShow(){
          let self = this
         wx.request({
           url: '/message/get-count',
           success: function(res) {
             if (res.data.obj.count != 0) {
               self.msgimg = '../img/msg.png';
               self.msgshow = 'block';
               self.msgnum = res.data.obj.count;
             } else {
               self.msgimg = '../img/nomsg.png';
               self.msgshow = 'none';
             }
             self.$apply();
           }
         });
       }
    

    解决办法

    这里采用的方法是在page页面定义一个回调函数,onLaunch请求完再执行回调函数。需要注意的是page页面判断一下当前 globalData.token 是否有值去然后再去请求业务接口。

    App页面在请求success后判断时候有page页面定义的回调方法,如果有就执行该方法。因为回调函数是在Page里面定义的所以方法作用域this是指向Page页面。
    定义了回调函数的 index.js 代码片

        onShowCall(){
        let self = this
         wx.request({
            url: '/message/get-count',
            success: function(res) {
              if (res.data.obj.count != 0) {
                self.msgimg = '../img/msg.png';
                self.msgshow = 'block';
                self.msgnum = res.data.obj.count;
              } else {
                self.msgimg = '../img/nomsg.png';
                self.msgshow = 'none';
              }
              self.$apply();
            }
          });
      }
        onShow(){
          var token = this.$parent.globalData.token
            console.log("token:"+token);
            if( token == ''){
              getApp().loginCallback = res => {
                this.onShowCall()
            };
            }else{
              this.onShowCall()
            }
        }
    

    加了回调函数的 app.js 代码片段

    globalData = {
        userInfo: null,
        token:''
      }
      onLaunch() {
        this.$interceptors = {
          request: {
            config(p) {
              p.url = 'http://test.xxx.com/api' + p.url
              if(this.globalData.token && this.globalData.token != ''){
                 p.header = {
                  token: this.globalData.token
                };
              }
              return p;
            },
            success(rst) {
              return rst;
            }
          }
        };
        this.login();
      }
        login() {
        const self = this;
        wx.login({
          success(data) {
            wepy.request({
              url: '/user/login?code='+data.code,
              success: function(res) {
                  wx.setStorageSync('userInfo', res.data.obj);
                  self.globalData.token=res.data.obj.token ; 
                   //这里调用回调函数
                   if (getApp().loginCallback) {
                   getApp().loginCallback(res.data.obj.token);
                  }  
              }
        });
      }
    

    这样的话,就能实现想要的结果。执行顺序就是:

     [App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback
    
    展开全文
  • 小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload, 我们希望onLaunch执行完后再执行onload。 解决方法:定义回调函数 //app.js App({ onLaunch: ...

    一:前言

    小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload, 我们希望onLaunch执行完后再执行onload。

    解决方法:定义回调函数

    //app.js
    
    App({
      onLaunch: function () {
        wx.request({
          url: 'http://test.cn/login', //仅为示例,并非真实的接口地址
          data: {},
          success: function(res) {
            this.globalData.checkLogin = true;
            //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (this.checkLoginReadyCallback){
               this.checkLoginReadyCallback(res);
            }
          }
        })
      },
      globalData: {
        checkLogin: false
      }
    })
    
    
    //index.js
    //获取应用实例
    const app = getApp()
    
    Page({
      data: {
        test: false
      },
      onLoad: function () {
        let that = this;
        //判断onLaunch是否执行完毕
        if (app.globalData.checkLogin){
          that.setData({
            test:true
          })
        }else{
          app.checkLoginReadyCallback = res => {
            that.setData({
              test:true
            })
          };
        }
      }
    })

    执行顺序:[App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback-> [Page] onLoad

    展开全文
  • 小程序开发经常遇到这样的场景,在小程序生成时直接获取微信用户信息并且注册到我们自己的服务器上, 然后获取我们生成的用户信息以便使用 即app on launch->ajax->ajax success->page on onLoad 但是因为ajax为异步...
  • 小程序 onLaunch在onLoad后执行问题

    千次阅读 2018-09-05 17:42:05
    项目中遇到这样一个问题就是需要登录之后存一个id然后发现第一次进来的时候登录方法在index的方法后执行 拿不到想要的值 解决办法 1.就是可以加一个启动页 做个缓冲 ... // 小程序启动逻辑 // 1. 登录 ...
  • 前言:一般我们会在用户首次进入时(任何页面)执行一次操作获取用户数据,所以onLaunch是我们很好的选择 onLaunch和页面的onLoad是异步操作,就会存在用户数据还没有获取到,页面的onLoad就执行完了,导致onLoad拿...
  • 需求是这样的,每次进入小程序的时候需要检验该token有没有,没有就请求后台获取token,由于我一开始将该检验函数A放在onLaunch事件里面,但是这个函数A是引入的其他js文件里面的,这时候我在这个js文件里面使用const app...
  • 小程序onLaunch和onLoad先后执行顺序

    万次阅读 2018-04-03 11:15:16
    本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求获取是否有权限,等待返回值的时候Page里的onLoad事件就已经执行了。解决办法:在APP里面onLanch中的...
  • 微信小程序onLoad与onLaunch执行顺序的统一 ​ 微信小程序的app.js中的onLaunch()函数与首页的onLoad()函数执行顺序是不确定的,这取决于小程序初次运行时是app.js先加载至onLaunch()还是首页先加载至onLoad()。 ​ ...
  • 再此之前,一直以为微信小程序中的App.js 中onLaunch小程序初始化完成执行该方法)方法比其他页面的的 onload 方法要先执行。那么问题就来了,我每次进入小程序首页的时候有时候会先执行onlaunc...
  • 本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求获取是否有权限,等待返回值的时候Page里的onLoad事件就已经执行了。 要是能等完onLaunch请求完再执行...
  • 小程序 onLaunch 无法执行跳转的问题

    千次阅读 2019-09-29 12:00:51
    因为在执行onLaunch的时候,小程序页面还未注册完成,所以无法跳转,可以通过加个延时来达到目的。 主要是为了授权,这样就不用在每个页面都判断授权。 onLaunch: function () { var that = this; // 获取用户...
  • 本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求获取是否有权限,等待返回值的时候Page里的onLoad事件就已经执行了。 //app.js App({ onLaunch: ...
  • 原文转载自:微信小程序onLaunch、onLoad执行生命周期 1、需求:先执行App的onLaunch添加验证权限等,再执行Page里的onLoad。 2、问题:还没有等onLaunch执行完成,onLoad就已经开始执行了。 3、解决办法:定义回...
  • onLaunch

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,009
精华内容 2,803
关键字:

onlaunch小程序