我有一个click事件处理程序,如果有一个函数可以使函数出列。我做了一个等待队列的循环。我认为这样可行,但在我的一台机器上,它会导致忙碌的等待并冻结一切。我很困惑为什么这是一个问题。目标是等待队列非空。有人可以帮忙吗?感谢
function handleViewClick(event){
clickEvent = event; // make event details available to requestReport on body-foo Q
var body = $("body");
while ( 0 == body.queue("foo").length )
setTimeout(function(){
handleViewClick(event);
},
1000);
body.dequeue("foo"); // analyze and report on click.
}
答案 0 :(得分:4)
让我用英文编写代码,看看是否有帮助。
handleViewClick
功能,需要event
...
event
分配给clickEvent
变量body
foo
的长度不为零......
handleViewClick
foo
的长度不为零......
handleViewClick
foo
的长度不为零......
handleViewClick
foo
的长度不为零......
handleViewClick
while
循环将一直运行直到完成。 setTimeout
会在获得机会后运行,并在指定时间后尽快运行。这两者是不相容的。您正在设置数百万个计时器,并期望结果不同。
您的意思是if
而不是while
吗?因为这样可行,如果您将dequeue
调用放入相应的else
。