两个_animate()分别有啥作用 求语法解答
两个_animate()分别有啥作用 求语法解答
两个_animate()分别有啥作用 求语法解答
2016-12-12
来看下面这段代码:
var Promise = window.Promise function promiseAnimate(ball,distance){ return new Promise(function(resolve,reject){ function _animate(){ setTimeout(function(){ var marginLeft = parseInt(ball.style.marginLeft,10) if(marginLeft === distance){ resolve() }else{ if(marginLeft < distance){ marginLeft++ }else{ marginLeft-- } ball.style.marginLeft = marginLeft + 'px' _animate() } },13) } _animate() }) }
第4行到第20行是在给Promise构造函数传递的匿名函数(这里命名为callback)内部定义的一个私有函数_animate(),这是一个递归函数,递归的目的是执行动画,_animate()函数内部使用setTimeout()函数每隔13毫秒做出判断和改变并调用一次自己,而在_animate()函数定义外部在callback()函数内部调用_animate()是为了出发第一次动画执行,如果还不懂的话可以看一下简化之后的代码:
function promiseAnimate(ball,distance){ return new Promise(function(resolve,reject){ function _animate(){ setTimeout(function(){ ...//判断和改变 _animate() },13)//递归执行 } _animate()//首次触发 }) }
举报