两个_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()//首次触发
})
}举报