小程序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(黄先生)
在线留言:
微信扫码,关注我们
相关文章
  • 开发微信点餐小程序,服务管理更便捷,经营成本有效降低

    微信小程序作为一个工具型的产品被开发与推广,有多种可以作为工具使用的场景可以选择,餐饮行业的点餐工具就是常见的

  • 手势开发研究,微信小程序的单触摸电与多触摸点

    在微信小程序的开发过程中,手势常常被应用在canvas、交互的开发中,所以手势对一些开发效果来说是比较重要的

  • 旅行社要不要开发微信小程序?可以怎么用?

    这是一份假装真心实意的问答调查情景式推文,总结一下旅行社与小程序之间剪不断理也不乱的关系,仔细看看还有点小用处。

  • 微信小程序开发升级应用,玩转高端多媒体功能!

    自从四月份微信官方像开了挂一样地开发小程序之后,它升级应用功能的脚步就再也停不下来,所以现在又带来了两个新的高端功能,让运营者可以轻松玩转多媒体功能

  • 小程序的上线,到底带来了什么

    程序在还没面世前就已经众说纷纭,犹如百家争鸣势头,各方对小程序功能、小程序开发、小程序使用等各个方面都有着自己理解的说辞。

  • 广州企业开发微信小程序后有什么优势?

    小程序开发可谓是现下的一股时尚热潮,不仅是因为小程序的新兴与潮流

汇丰彩票官网 欢乐城彩票官网 诚信彩票官网 满堂彩 千旺彩票 春秋彩票充值 众赢彩票官网 宏图棋牌官网 优信彩票官网 106彩票官网