javascript/jquery循环导致忙等待

javascript/jquery循环导致忙等待,javascript,jquery,Javascript,Jquery,我有一个click事件处理程序,它可以在函数可用时将其出列。我绕了一圈等待排队。我原以为这会奏效,但在我的一台机器上,这会导致繁忙的等待并冻结所有内容。我不明白为什么这是个问题。目标是等待队列非空。有人能帮忙吗?谢谢 function handleViewClick(event){ clickEvent = event; // make event details available to requestReport on body-foo Q var body = $("body")

我有一个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.
}

让我把你的代码译成英语,看看是否有用

handleViewClick函数,它接受一个事件。。。 将事件分配给clickEvent变量 获取文档正文并将其放入正文中 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick ... 崩溃 而循环将一直运行到完成。setTimeout将在获得opportunity时,在指定的时间后尽快运行。这两者是不相容的。您正在设置数以百万计的计时器,并期望结果有所不同


你是说如果,而不是一会儿?因为这样可以工作,如果您将出列调用放在相应的else中。

让我用英语编写代码,看看是否有帮助

handleViewClick函数,它接受一个事件。。。 将事件分配给clickEvent变量 获取文档正文并将其放入正文中 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick 如果队列foo的长度非零。。。 设置计时器以在一秒钟内再次调用handleViewClick ... 崩溃 而循环将一直运行到完成。setTimeout将在获得opportunity时,在指定的时间后尽快运行。这两者是不相容的。您正在设置数以百万计的计时器,并期望结果有所不同

你是说如果,而不是一会儿?因为如果您随后将出列调用放入相应的else中,这将起作用