当前位置:   article > 正文

小程序onlanch和page的onload的执行顺序问题_微信小游戏的onloadcallback

微信小游戏的onloadcallback

问题: 等待小程序onlanch执行完毕之后page的onload再执行
产生原因:小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload
目标: onLaunch 请求完 -> 再执行Page的onLoad方法
解决方法:通过定义回调函数

  1. //app.js
  2. App({
  3. onLaunch: function () {
  4. wx.request({
  5. url: '接口请求',
  6. data: {},
  7. success: function(res) {
  8. this.globalData.checkLogin = true;
  9. //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
  10. // 所以此处加入 callback 以防止这种情况
  11. if (this.checkLoginReadyCallback){
  12. this.checkLoginReadyCallback(res);
  13. }
  14. }
  15. })
  16. },
  17. globalData: {
  18. checkLogin: false
  19. }
  20. })
  21. //index.js
  22. //获取应用实例
  23. const app = getApp()
  24. Page({
  25. data: {
  26. test: false
  27. },
  28. onLoad: function () {
  29. let that = this;
  30. //通过三方变量判断onLaunch是否执行完毕
  31. //如果执行完毕则正常进行后续操作 如果没有执行完毕则添加回调函数callback通过callback获取返回值从而进一步操作
  32. if (app.globalData.checkLogin){
  33. that.setData({
  34. test:true
  35. })
  36. }else{
  37. app.checkLoginReadyCallback = res => {
  38. that.setData({
  39. test:true
  40. })
  41. };
  42. }
  43. }
  44. })

同理上面通过三方变量追加回调函数可以进行简化直接把Lanch里面的请求进行进一步封装为promise这样在page的onload里面可直接使用.then进行后续操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/284375
推荐阅读
相关标签
  

闽ICP备14008679号