我有一个单击事件处理程序,如果一个函数可用,该事件可使该函数出队。我做了一个循环来等待队列。我以为这可以用,但是在我的一台机器上,这会导致繁忙的等待并冻结所有内容。我对为什么这是一个问题感到困惑。目标是等待队列为非空。有人可以帮忙吗?谢谢
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.
}
最佳答案
让我用英语输入您的代码,看看是否有帮助。handleViewClick
函数,需要一个event
...
将event
分配给clickEvent
变量
获取文档正文并将其放入body
如果队列foo
的长度不为零...
设置计时器以在一秒钟内再次调用handleViewClick
如果队列foo
的长度不为零...
设置计时器以在一秒钟内再次调用handleViewClick
如果队列foo
的长度不为零...
设置计时器以在一秒钟内再次调用handleViewClick
如果队列foo
的长度不为零...
设置计时器以在一秒钟内再次调用handleViewClick
...
崩溃while
循环将运行直到完成。 setTimeout
将在有机会时运行,请在指定时间后尽快运行。两者不兼容。您正在设置数百万个计时器,并且期望结果会有所不同。
您是说if
而不是while
吗?因为那可以,所以如果您将dequeue
调用放在相应的else
中。