时间分片问题
Dec 20, 2016最近在工作中遇到一个新的需求,要求在前后两次接口请求中,第一次返回的数据值(A)和下次返回的数据值(B),通过每次增加一定的值,从A加到B,从而达到数字在目标值之间快速翻动的效果,而没有出现数字跳跃。
效果图如下:
相关知识扩充-requestAnimationFrame
requestAnimationFrame是浏览器用于定时循环操作的一个接口,用的比较少,所以第一次听到的时候很惊讶,主要用途是按帧对网页进行重绘,优点:不会丢失帧,充分利用浏览器的刷新机制,(思考:浏览器刷新机制和显示器刷新机制的区别???),节约资源。
用法参照:MDN(requestAnimationFrame用法)
思路
如图:
上图左框中表示的是每隔5s定时调用后台接口,返回记录值;右框中表示每次滚动值的计算。
下面详细描述下右框中的内容:前一次调用接口返回的值为48(假设叫prev),直到下一
次调用返回值88(假设叫cur),通过这个计算出速度speed = (88-48)/1000(1s为1000ms);
curVal = 48+speed*(curTime-startTime)(表示当前滚动的值),curTime表示获取curVal
的时候时间,而startTime表示开始执行requestAnimationFrame时候的时间。
伪代码
