最赞回答 / 慕_男神
仔细看 timeline.animationHandler = requestAnimationFrame(nextTick);这句nextTick作为回调函数传到之前定义的requestAnimationFrame函数中,在requestAnimationFrame函数中,当浏览器不支持requestAnimationFrame时,会返回下面这句return window.setTimeout(callback, callback.interval || DEFAULT_INTERVAL);其中call...
2016-09-22
讲师回答 / ustbhuangyi
其实这个帧动画库我在百度工作的时候,从一个实际项目需求里抽象出来的。因为我们有大量帧动画的需求,但又不想为每个需求去编写那些重复的代码,所以就想抽象一个通用的帧动画库,方便开发。当时设计接口的时候一个很重要的原则,就是怎么让人用起来爽,就定了链式调用这种方式。后来也发现这种设计和promise的一些设计思想不谋而合。一开始设计的时候就考虑到大部分接口了,比如loadImage,changePosition,changeSrc,then,repeat,repeatForever,enterFrame,sta...
2016-07-05
讲师回答 / ustbhuangyi
首先,要理解JS的执行是单线程的,在一轮Event Loop的时候,会执行所有同步JS代码。setInterval的运行机制是,将指定的代码移出本次执行,等到下一轮Event Loop时,再检查是否到了指定时间。如果到了,就执行对应的代码;如果不到,就等到再下一轮Event Loop时重新判断。这意味着,setTimeout指定的代码,必须等到本次执行的所有代码都执行完,才会执行。每一轮Event Loop时,都会将“任务队列”中需要执行的任务,一次执行完。setTimeout和setInterval都是...
2016-07-04