这次开发小程序遇到一个聊天的场景:在聊天页时,用户收到消息后,页面并未自动滚动到页面最底部,而是需要手动滚动。但,聊天数据又是拉接口调用直接更改的聊天数据数组,怎么控制刷新聊天数据时只调用一次滚动到底部的方法scrollToBottom成为了问题。
这里就可以巧妙的应用setTimeout这个东西。代码如下
var timer= false
function toBottom(){
if(timer){
clearTimeout(timer)
timer = false;
}
timer = setTimeot(function(){
wx.pageScrollTo({
scrollTop:999,
duration:0
})
},300)
}
//这样多次调用toBottom()timer,只执行一次
//基本思想是,使用false当开关。在300s内重复调用的话,不会重复触发。其实也是有点点的取巧,只要数据改变的够快,我就不会重复走