赞
踩
问题: 等待小程序onlanch执行完毕之后page的onload再执行
产生原因:小程序网络请求默认为异步请求,在appjs的onLaunch运行后进行异步请求时,程序不会停止,Page页已执行onload
目标: onLaunch 请求完 -> 再执行Page的onLoad方法
解决方法:通过定义回调函数
- //app.js
-
- App({
- onLaunch: function () {
- wx.request({
- url: '接口请求',
- 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是否执行完毕
- //如果执行完毕则正常进行后续操作 如果没有执行完毕则添加回调函数callback通过callback获取返回值从而进一步操作
- if (app.globalData.checkLogin){
- that.setData({
- test:true
- })
- }else{
- app.checkLoginReadyCallback = res => {
- that.setData({
- test:true
- })
- };
- }
- }
- })
-
同理上面通过三方变量追加回调函数可以进行简化直接把Lanch里面的请求进行进一步封装为promise这样在page的onload里面可直接使用.then进行后续操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。