Javascript jQuery队列函数

Javascript jQuery队列函数,javascript,jquery,queue,Javascript,Jquery,Queue,采取以下两种方法: function moveUp() { this.element.rotate(0); this.element.animate({"margin-top": "-=51px"}, "slow"); //do some more things for instance. } function moveRight() { this.element.rotate(90); this.element.animate({"

采取以下两种方法:

function moveUp() {
     this.element.rotate(0);
     this.element.animate({"margin-top": "-=51px"}, "slow");
     //do some more things for instance.    
}

 function moveRight() {
     this.element.rotate(90);
     this.element.animate({"margin-left": "+=51px"}, "slow");
 }
以防万一,我旋转一个对象,然后用动画将其移动。这些功能映射到按键,因此如果用户向上或向右按,对象将移动。我的问题是动画正确地排队,因为jQuery使用fx队列。但是旋转是间接发生的,就像我做的任何其他事情一样,因为它们是我在代码中自定义的东西

结果很明显,如果你按“向上说”并立即按“向右”,对象会向上旋转,但当它向上移动时,它会向右旋转,它不会真正等到它到达那里

我如何编写这段代码,以便将整个方法链接起来,而不仅仅是它们的动画。我可以添加回调,但它们不会总是一起执行,如果它们碰巧同时被调用,我需要将它们排队,但我不太了解如何在jQuery中使用队列功能


顺便说一句,为了了解更多这背后的代码,我最近也提出了一个问题:

您可以使用如下方式设置动画:

    $elem.animate({rotation: 90},
    {
            duration: 'slow',
            step: function(now, fx) {
                    $(this).css({ "transform": "rotate("+now+"deg)", "-webkit-transform": "rotate("+now+"deg)", "-moz-transform": "rotate("+now+"deg)" });
            }
    })
这将自动将其添加到队列中

我在这里做了一个jsfiddle:

编辑:为了解释我的基本原理,我猜测您正在使用的
rotate
方法是使用setTimeout在CSS中逐步设置旋转,因此不会将其添加到动画队列中。这里的代码使用
animate
旋转元素,以便将其添加到动画队列中