iscroll插件的原理和requestAnimationFrame是微任务还是宏任务

692 阅读1分钟

iScroll是由3大事件控制的

touchstart

主要做一些初始化的设置,如开始的位置,时间,是否在滑动等

touchmove

  • 首先判断是否小于6px,是的话,则没有发生滑动
  • 计算新的位置,如果已经超出了视图范围,则减缓滑动的速度
  • 滑动到新的位置,设置transform
  • 每隔300ms,重新设置一次触发开始时间和结束时间

touchend

  • 判断是否是点击事件,如果是的话,则执行相应事件
  • 如果是滑动事件,则惯性滑动到目标位置
  • 变速滑动式通过requestAnimation来实现的

window.requestAnimationFrame

当更新动画的时候,会调用此函数,他会在下一次重绘之前调用你传给改方法的回调函数,一般情况下是一秒钟执行60次,但是和浏览器的刷新频率也有关系

是微任务还是宏任务

既不是微任务也不是宏任务,放在当前当前宏任务队列,但是微任务之后

因为requestAnimationFrame是在下一次重绘之前被调用的,一个事件循环的tick是包括浏览器的渲染过程的