为了了解微信小程序什么时候会执行setInterval中的函数,我通过在app.js文件中设置setInterval每分钟执行一次的方式来进行实验。代码如下:
setInterval(function() {
db.collection('study').where({
is_studying: false
}).update({
data: {
time: new Date()
}
})
}, 60000)
该代码能够让小程序每分钟执行一次function函数中的内容(向数据库中更新time字段的值)。通过每分钟观察数据库中的time字段的值得出以下结论:定时器里的回调函数第一次执行时间不是在定时器被调用时立马执行,而是定时器被调用后到达第一个预设时间时执行;其次,该定时器内的函数只有当小程序处于前台位置,即小程序的界面被用户所看见时才会执行。小程序进入后台后,定时器并不会继续执行函数,但也没有被销毁,当小程序再次回到前台,该函数又会继续每分钟执行一次;当小程序被销毁后,该定时器也被销毁。