jquery在离开函数之前等待动画完成
问题描述:
我在函数内部有一个动画。我如何编码以便在离开函数之前动画应该先完成?jquery在离开函数之前等待动画完成
考虑下面的代码:
ShowBanner.prototype.basicRotate = function (pos, callback) {
var self = this;
self.animation = true;
this.bigbannerScroll.animate({
left: pos
}, this.settings.rotateSpeed, function() {
self.animation = false;
if (callback) callback();
console.log('animation done');
return false;
});
console.log('function done');
}
基于代码的console.log('function done')
是console.log('animation done')
之前首先调用。有没有办法让第一个日志先被调用,说明离开函数之前动画已经完成了?
答
不,因为animate是一个异步函数,它将启动动画并返回。
如果您需要在动画完成后执行某些操作,那么您需要使用完整的回调。
答
animate
是异步的,所以我不认为有一种方法可以在动画发生时暂停。最好的选择就是坚持使用complete
回调函数。
另一种替代方法是设置超时(使用setTimeout
)来定义在指定时间后运行的另一个函数。但是,我看不到这样做的好处。
它不会这样工作,因为animate是一个异步函数,您需要使用回调机制 – 2013-04-24 08:52:59