Javascript 实时获取div上的排队函数

Javascript 实时获取div上的排队函数,javascript,jquery,Javascript,Jquery,嘿,伙计们,我在查询文档的 在Jquery.queue中,文档中有一个非常好的示例,它实际显示了如何获得在任何html元素上排队的动画的长度。下面是一把小提琴,展示了o的例子 现在,我正在构建一个Jquery插件,其中我需要实时检查HTML元素上排队的动画数量,让我们快速查看文档中的代码 var div = $( "div" ); function runIt() { div.show( "slow" ) .animate({ left: "+=200" }, 2000 ) .s

嘿,伙计们,我在查询文档的

在Jquery.queue中,文档中有一个非常好的示例,它实际显示了如何获得在任何html元素上排队的动画的长度。下面是一把小提琴,展示了o的例子

现在,我正在构建一个Jquery插件,其中我需要实时检查HTML元素上排队的动画数量,让我们快速查看文档中的代码

var div = $( "div" );
function runIt() {
div.show( "slow" )
    .animate({ left: "+=200" }, 2000 )
    .slideToggle( 1000 )
    .slideToggle( "fast" )
    .animate({ left: "-=200" }, 1500 )
    .hide( "slow" )
    .show( 1200 )
    .slideUp( "normal", runIt );
}

function showIt() {
    var n = div.queue( "fx" );
    $( "span" ).text( n.length );
    setTimeout( showIt, 100 );
}
    runIt();
    showIt();
最后两行是关键的,runIt基本上执行给定div上的所有动画,showit基本上在最后一行被调用一次,然后在100毫秒间隔后再次运行

以下是我在上述代码中列出的困难:

showit只运行一次,在最后一行调用时为第一次,在100ms后调用setTimeOut函数时为第二次,但在小提琴或文档中,showit函数是如何每100ms调用一次的呢??据我所知,如果showit需要每100ms调用一次,它应该是setInterval,而不是setTimeOutsetTimeOut,只运行一次,而不是递归运行。对吧

我的第二个问题是,每次调用showit时,它都会返回排队的动画的准确数量,但不知何故,我猜runit和showit并不同步!我猜是的!我不是一个和蔼可亲的Jquery,并非每次执行动画队列中的函数时,showit函数都会更新队列中正确数量的动画,相反,在给定函数中编码的showit函数实际上会给我们一种印象,它与runit函数同步,我的意思是同步,我想说的是,每次在runit函数中执行动画时,showit都不会更新值。。istead showit每100ms更新一次队列值,这给我们的印象是showit与runit是同步的

我对Showit和runt不同步的解释正确吗。。虽然表面上是这样的。。这是我的问题

当然,我的第二个问题是,为什么showit每100毫秒运行一次??当我看到它在小代码段中只运行了两次

多谢各位


泰纳利

setTimeout确实只运行一次回调。但在本例中,回调函数本身就是showIt。因此,当它运行时,它将再次运行setTimeout行。有效的非阻塞recursion@GabyakaG.Petrioli仍然不明白: