Javascript 如何让脚本等待jQuery动画完成?
我有一个名为runUpdates的函数,我将JSON对象数组传递给它。此函数查看对象,并使用if语句来决定它是哪种更新以及处理该更新时应采取的方向。在某些情况下,更新会绑定动画。我想使用jQuery的animate来设置这些动画,但我希望它在进入下一步之前等待动画完成 我的程序看起来像这样-Javascript 如何让脚本等待jQuery动画完成?,javascript,jquery,animation,jquery-animate,Javascript,Jquery,Animation,Jquery Animate,我有一个名为runUpdates的函数,我将JSON对象数组传递给它。此函数查看对象,并使用if语句来决定它是哪种更新以及处理该更新时应采取的方向。在某些情况下,更新会绑定动画。我想使用jQuery的animate来设置这些动画,但我希望它在进入下一步之前等待动画完成 我的程序看起来像这样- runUpdates(updates) { for(i = 0; i < updates.length; i++) { update = updates[i];
runUpdates(updates) {
for(i = 0; i < updates.length; i++) {
update = updates[i];
if(update.type = "blabla") {
//do stuff
} else {
//do other stuff
if(update.animations) {
for(k = 0; k < animations.length; k++) {
//do jquery animate AND wait for animation to finish before proceeding
}
}
}
}
}
runUpdates(更新){
对于(i=0;i
但即使动画已经开始,脚本仍将继续运行。有没有一个简单的方法来解决这个问题,或者我需要用函数调用来重新创建循环?你的问题不是很清楚你想要等待什么。我假设您希望在继续下一个动画之前等待每个动画完成
var pipe = $.Deferred().resolve();
for(var k = 0; k < animations.length; k++)
{
pipe = pipe.pipe(function()
{
return $('element').animate({
// animate whatever you want
}, 300);
});
}
…这是小提琴:
如果您对链接动画不感兴趣(希望它们异步执行),并且只希望在所有动画完成后运行一些代码,请使用以下方法:
var deferreds = [];
for(var k = 0; k < animations.length; k++)
{
deferreds.push(
$('element').animate({
// animate whatever you want
}, 300)
);
}
$.when.apply($, deferreds).done(function()
{
// Put your code here...
});
var递延=[];
对于(var k=0;k
…最后,这里是问题的症结所在:你的问题不是很清楚你想等待什么。我假设您希望在继续下一个动画之前等待每个动画完成
var pipe = $.Deferred().resolve();
for(var k = 0; k < animations.length; k++)
{
pipe = pipe.pipe(function()
{
return $('element').animate({
// animate whatever you want
}, 300);
});
}
…这是小提琴:
如果您对链接动画不感兴趣(希望它们异步执行),并且只希望在所有动画完成后运行一些代码,请使用以下方法:
var deferreds = [];
for(var k = 0; k < animations.length; k++)
{
deferreds.push(
$('element').animate({
// animate whatever you want
}, 300)
);
}
$.when.apply($, deferreds).done(function()
{
// Put your code here...
});
var递延=[];
对于(var k=0;k
…最后,这里有一把小提琴:首先,您可以使用jQuery的动画回调-
第二个是对象。首先可以使用jQuery的动画回调-
第二个是对象。动画是否有动画结束事件?我怀疑您必须重新构造循环以使用函数调用。jQuery的
.animate()
有一个完整的回调函数,可以用来启动流程的下一步。看起来像这样-为什么不给我们看一些真实的代码?!动画是否有动画结束事件?我怀疑您必须重新构造循环以使用函数调用。jQuery的.animate()
有一个完整的回调函数,可以用来启动流程的下一步。看起来像这样-为什么不给我们看一些真实的代码?!与使用管道链接所有动画承诺不同,更自然的方法是使用jQuery等待多个承诺。当@Ates Goral-您可以编辑我的小提琴并在此处发布链接吗?我不确定我在跟踪你。当
时,你将如何用实现这一点?与其用管道
链接所有动画承诺,更自然的方法是用jQuery等待多个承诺。当
@Ates Goral-你能编辑我的小提琴并在这里发布链接吗?我不确定我在跟踪你。当
时,您将如何使用实现这一点?