最近在开发商城小程序中,由于将权限校验都放在了app.js中,然后就有时出现无法获取扫码加载的第一个界面
小程序提供了getCurrentPages()函数获取页面栈,第一个元素为首页,最后一个元素为当前页面。
var pages = getCurrentPages()
var currentPage = pages[pages.length - 1] //获取当前页面的对象
此时会返回为空。为此,考虑了三种方法。
-
延迟加载setTimeOut.但是在网络比较差的时候,可能还是获取不到。
-
使用定时器 :这种情况下,需要注意 一定要将定时器关闭
var i = setInterval(function () {
var pages = getCurrentPages()
var currentPage = pages[pages.length - 1] //获取当前页面的对象
if (!isEmpty(currentPage)) {
clearInterval(i);
wx.setStorageSync('authBeforePage', {
route: currentPage.route,
options: currentPage.options
});
if (currentPage.route !== "pages/mainTree/mainTree") {
wx.redirectTo({
url: "/pages/mainTree/mainTree"
});
}
} else {
wx.redirectTo({
url: "/pages/mainTree/mainTree"
});
}
}, 300) //循环间隔 单位ms
- 异步消息
const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
worker.onMessage(function (res) {
console.log(res)
})
worker.postMessage({
msg: 'hello worker'
})
worker.terminate()
需要注意的是,worker.terminate(),仅限主线程 worker 对象上调用。
网友评论