Javascript 如何使函数排队

Javascript 如何使函数排队,javascript,jquery,Javascript,Jquery,我希望第二个函数blockdone在动画在第一个函数中完成运行后运行 我知道我可以通过将blockdone放在animate方法的回调中来实现这一点。但是由于我正在进行的项目的特殊原因,我不能这样做 在javaScript或jQuery中是否有某种方式可以对函数进行排队 也许这不是很雄心勃勃,但既然你知道动画的持续时间,你可以使用setTimeout函数来延迟文本的出现 功能块移动{ $'.block'。动画{top:'100px'},{duration:1000}。动画{width:'0'}

我希望第二个函数blockdone在动画在第一个函数中完成运行后运行

我知道我可以通过将blockdone放在animate方法的回调中来实现这一点。但是由于我正在进行的项目的特殊原因,我不能这样做

在javaScript或jQuery中是否有某种方式可以对函数进行排队


也许这不是很雄心勃勃,但既然你知道动画的持续时间,你可以使用setTimeout函数来延迟文本的出现

功能块移动{ $'.block'。动画{top:'100px'},{duration:1000}。动画{width:'0'}; 设置超时=>{ $'p'。文本'Done'; }, 1400; }; 拦路虎; html,正文{ 保证金:0; } .街区{ 背景色:红色; 宽度:100px; 高度:100px; 显示:块; 位置:相对位置; } p{ 位置:绝对位置; 顶部:1米; 右:1em; 文本对齐:右对齐; 显示:块; 保证金:0; }
也许这不是很雄心勃勃,但既然你知道动画的持续时间,你可以使用setTimeout函数来延迟文本的出现

功能块移动{ $'.block'。动画{top:'100px'},{duration:1000}。动画{width:'0'}; 设置超时=>{ $'p'。文本'Done'; }, 1400; }; 拦路虎; html,正文{ 保证金:0; } .街区{ 背景色:红色; 宽度:100px; 高度:100px; 显示:块; 位置:相对位置; } p{ 位置:绝对位置; 顶部:1米; 右:1em; 文本对齐:右对齐; 显示:块; 保证金:0; }
我想你收到了回电

您必须更改下面的代码

function blockmove(callback){
    $('.block').animate({top: '100px'},{duration: 1000} ).animate({width: '0'},
      function(){
         if(typeof callback === "function") callback();
    });
};

我想你收到了回电

您必须更改下面的代码

function blockmove(callback){
    $('.block').animate({top: '100px'},{duration: 1000} ).animate({width: '0'},
      function(){
         if(typeof callback === "function") callback();
    });
};

假设您知道动画运行的选择,您可以通过jQuery函数来实现这一点。它允许您指定一个函数,当队列中的所有其他函数都完成时,应该调用该函数

您可以指定队列的名称,因为可以为一个选择创建多个队列,但此函数使用的默认队列是存储effects.animate的队列。这正是你想要的,万岁

功能块移动{ $'.block'。设置动画{ 顶部:“100px” }, { 持续时间:1000 }.制作动画{ 宽度:“0” }; }; 功能阻断{ $'p'。文本'Done'; }; 拦路虎;
$'.block'.queueblockdone;// 假设您知道动画运行的选择,您可以通过jQuery函数来实现这一点。它允许您指定一个函数,当队列中的所有其他函数都完成时,应该调用该函数

您可以指定队列的名称,因为可以为一个选择创建多个队列,但此函数使用的默认队列是存储effects.animate的队列。这正是你想要的,万岁

功能块移动{ $'.block'。设置动画{ 顶部:“100px” }, { 持续时间:1000 }.制作动画{ 宽度:“0” }; }; 功能阻断{ $'p'。文本'Done'; }; 拦路虎;
$'.block'.queueblockdone;//为什么不能使用.animate方法的回调?这就是这里的解决方案。如果不使用回调函数,就很难知道动画何时完成以及何时调用下一个函数。这是jQuery插件的一部分还是什么?你应该没有理由不能使用回调…他确实说过他不能这么做。调用两次。动画将在第一个动画之后对第二个动画进行排队,所以这实际上是有道理的,@RocketHazmat:-@Justastudent:啊,是的。。。这是正确的!谢谢你指出这一点。a怎么样?为什么不能使用.animate方法的回调?这就是这里的解决方案。如果不使用回调函数,就很难知道动画何时完成以及何时调用下一个函数。这是jQuery插件的一部分还是什么?你应该没有理由不能使用回调…他确实说过他不能这么做。调用两次。动画将在第一个动画之后对第二个动画进行排队,所以这实际上是有道理的,@RocketHazmat:-@Justastudent:啊,是的。。。这是正确的!谢谢你指出。a怎么样?我想你应该设置一个1400ms的超时,因为第二个.animate调用也需要完成,默认持续时间是400ms。@Justastudent谢谢:-我想你应该设置一个1400ms的超时,因为第二个.animate调用也需要完成,默认持续时间为400ms。@Justastudent谢谢:-这很理想,我不知道这个函数。谢谢这很理想,我不知道这个函数。谢谢