小程序onLaunch执行异步,如何解决onLoad先执行的问题?

2018/10/1 18:34:29
摘要: 小程序开发时,按照事件顺序,小程序初始化触发APP的onlaunch后,在去是行页面Page的onload。但现实常常是,由于onlaunch

小程序开发时,按照事件顺序,小程序初始化触发APP的onlaunch后,在去是行页面Page的onload。但现实常常是,由于onlaunch里在请求获取是否有权限、等待返回值的时候,页面page里的onload事件已经执行了。那么,这个问题该如何去解决呢?小编get到一种方式,下面跟大家分享一下。

  要想实现等onLaunch请求完再执行Page的onLoad,其实可以采用定义一个回调函数的方法。Page页面要判断一下当前app。globalData。employId是否有值,没有的话,则定义一个app方法(回调函数)app。employIdCallback = employId => {。。。}。

而App页面在请求success后,去判断是否有Page页面定义的回调方法,如果有就执行该方法。另外,因为回调函数是在Page里面定义的,所以方法作用域this是指向Page页面。

下面我们看一下示例代码:

//app。js

App({

  onLaunch: function () {

    wx。request({

      url: 'test.php', //仅为示例,并非真实的接口地址

      data: {

      },

      success: function(res) {

        this。globalData。employId = res。employId;

        //由于这里是网络请求,可能会在 Page.onLoad 之后才返回

        // 所以此处加入 callback 以防止这种情况

        if (this.employIdCallback){

           this。employIdCallback(res。employId);

        }

      }

    })

  },

  globalData: {

    employId: ''

  }

})

 

//index。js

//获取应用实例

const app = getApp()

Page({

  data: {

    albumDisabled: true,

    bindDisabled: false

  },

  onLoad: function () {

    //判断是用户是否绑定了

    if (app。globalData。employId && app。globalData。employId != '') {

      this.setData({

        albumDisabled: false,

        bindDisabled: true

      });

    } else {

      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

      // 所以此处加入 callback 以防止这种情况

      app.employIdCallback = employId => {

        if (employId != '') {

          this.setData({

            albumDisabled: false,

            bindDisabled: true

          });

        }

      }

    }

  }

})

这样,它的执行顺序就变成如下:

[App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback


声明:文章"小程序onLaunch执行异步,如何解决onLoad先执行的问题?"为互诚科技—微信小程序开发公司的原创文章,转载请注明出处,谢谢合作!
标签:小程序干货
电话咨询:18011971195(黄先生)
在线留言:
微信扫码,关注我们
相关文章
  • 广州企业外包微信小程序开发要注意什么

    广州企业千千万,微信小程序开发公司也不少,相较于企业自己开发小程序,选择开发公司会比较省时省力。不过虽然如此,但是这并不代表企业就没有注意事项,在选择好开发公司之后,自己的也要融入到开发的工作当中,将自己的想法全面传达给开发公司

  • 培养客户忠诚度,用微信小程序会员积分系统就好

    微信小程序商城系统不仅是一个可以展示商品、销售商品的系统,而且为了解决一般电商系统吸引新粉丝难、维护老粉丝难的问题,还同时配备了会员积分管理等系统,来为企业商家或者个人开发者开发后增加客户粘性、培养客户忠诚度起到一个工具性的作用。

  • 关于电商小程序的变现方式分析

    很多人都以为小程序在电商行业中的应用会给电商商家带来很强的获取流量而盈利的作用,但是这只是主观想法,必须要

  • 微信小程序开发,参数取值方法介绍

    一个微信小程序开发项目,在整个开发流程中,必要用到的就是参数取值,一般来说,常见的参数取值有列表index下标取值与form表单取值

  • 目前微信小程序开发的市场反应如何

    对于微信小程序开发的市场反应可以分为三个阶段:过去、目前与未来。过去式作为已经发生过的事情,小程序低迷的市场反应大家也已经看在眼中

  • 移动官网、小程序、公众号,适应哪种企业的发展?

    微信这个平台,不仅只有微信公众号、小程序这两个可以为企业营销所用的平台,还有移动官网可以用户展示企业信息资讯,也有一定的营销作用。不过,针对不同企业,这三个产品对其作用力的大小都不太一样,也就是说,每一种产品在企业的特性下,适应力都不相同

好彩客官网 118彩票充值中心 159彩票官网 好彩客 双赢彩票娱乐 江苏快3官网 凤凰彩票充值中心 河北快3 同城彩票充值 河北快3