小程序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(黄先生)
在线留言:
微信扫码,关注我们
相关文章
  • 微信小程序带来的改变有哪些方面?

    微信小程序出现了一年了,越来越多的用户知道小程序的存在,也越来越多的用户开始去使用它,用户使用惯性正在逐渐养成

  • 微信小程序新增四项能力,信息展示开发越强大

    微信官方在小程序功能的开放之路真的是越走越远,现在又就着信息展示模块来开放了四项新能力,来提升用户的体验以及小程序运营者的管理体验,小编只能说这次的事情搞得依旧深得人心。按照写作流程,在夸完新能力深得人心之后,小编就要来介绍一下这四项新能力了。

  • 微信小程序开发技术教程之swiper组件

    微信小程序滑块视图容器swiper类似于安卓的ViewPager,但是微信小程序的swiper相比于安卓的ViewPager要容易实现一点,下面将为大家介绍

  • 一个新开发的微信小程序,要如何提高搜索排名?

    针对小程序在微信搜索中排名前后这个问题,微信官方给出了一套排名标准,其中进入到小程序行列中的时间长短占的比例比较大,但这一方面对于新开发的小程序排名来说基本没有什么用。那么,新开发的小程序要如何去做才能快速提高自己的搜索排名呢?

  • 如何培养起用户使用微信小程序的习惯

    用户对微信小程序的使用惯性的强弱,是小程序能否长远发展的重要因素。所以,在运营的过程中,对用户使用习惯的培养也非常重要

  • 就目前情况看,企业开发微信小程序还是APP?

    一晃半年过去,微信小程序已经上线这么长时间的,在这半年里,其经历过沉沉浮浮、起起落落,从差点被市场放弃而后又重获新生,各类企业商家对小程序的开发态度仍旧是比较模糊的概念,特别是现在,有别于小程序之前的低迷状态,正是由于它的发展,所以才令更多的人