小程序在启动阶段可能需要根据后台数据库内容来执行不同的初始化操作。但不能确定何时拿到后台数据。这时可用 js 定时器来检查是否拿到。在 page 的 onLoad 阶段启动定时器是合适的,过早启动(比如在读后台时启动)会无法成功执行page 的 setData 指令。以下是代码框架。
// index.js
var hTimer = 0 // 定时器id (用于关闭定时器)
var dataready = false // 表示已拿到数据
Page({data: {}, onLoad(){tickstart()}, })
getdatafromserver() // 读后台数据库
function getdatafromserver(){
// 读后台数据库,拿到就设置标志
wx.request({success(res){dataready = true}})
}
function tickstart(){
// 启动定时器
hTimer = setInterval(ding1, 500)
}
function ding1(){
// 定时器事件例程
if(dataready){
clearInterval(hTimer)
// 以下即可执行初始化指令
var that = getCurrentPages().pop()
that.setData({...})
}
}
// 补记:可对检测进行计次,达到时就关闭定时器不再检测。