共计 750 个字符,预计需要花费 2 分钟才能阅读完成。
通常,在 app.js 放置一些初始化的登录检测等方法,但是由于 app.js 和 pages 的方法异步执行,如果 app.js 的 onLaunch 执行时间过长,执行未结束时候,页面的 onLoad 已经开始执行,导致 onload 当中无法获取到初始化的一些参数,进而引起首页打开失败,数据加载错误。
网络上其他朋友分享过很多办法,比如增加一个回调函数,或者引入 promise,或者进行 relaunch 等方法,这里我们再提供一个改动较小的办法,就是使用 setInterval 进行循环监听,下方是案例代码:
该方法的一个好处是无需对原来的 app.js 做任何修改,只需要对 pages 的调用进行一个包裹即可:
onLoad:function(){
var that = this
// 假设 app.js 会在缓存中写入 token 值,这里先判断是否已经写入
if (!wx.getStorageSync('token')) {
// 如果未写入,则进行一个循环监听等待
var trynum = 1;
var watchtoken = setInterval(function () {console.log('第'+trynum+'尝试')
if (wx.getStorageSync('token')) {clearInterval(watchtoken)
that.getData();}
// 超时报错,避免资源长期占用,超时自动停止监听,并弹出错误提醒
if (trynum>= 20) {wx.hideLoading()
wx.showModal({
title: '出错了',
content: '系统加载失败, 请联系客服',
})
clearInterval(watchtoken)
}
trynum += 1;
}, 500);
} else {
// 如果已经写入了,直接后续操作
that.getData();}
}
正文完
加入官方交流QQ群:778957856
