gpt4 book ai didi

javascript/jquery 循环导致忙等待

转载 作者:行者123 更新时间:2023-11-30 10:08:31 26 4
gpt4 key购买 nike

我有一个点击事件处理程序,如果一个函数可用,它会将一个函数从队列中取出。我循环等待队列。我认为这会起作用,但在我的一台机器上它会导致繁忙的等待并卡住所有内容。我很困惑为什么这是一个问题。目标是等待队列非空。谁能帮忙?谢谢

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变量
    • 获取文档主体并将其放入body
    • 如果队列 foo 的长度不为零...
      • 设置一个定时器在一秒内再次调用handleViewClick
    • 如果队列 foo 的长度不为零...
      • 设置一个定时器在一秒内再次调用handleViewClick
    • 如果队列 foo 的长度不为零...
      • 设置一个定时器在一秒内再次调用handleViewClick
    • 如果队列 foo 的长度不为零...
      • 设置一个定时器在一秒内再次调用handleViewClick
    • ...
    • 崩溃。

while 循环将运行直到完成。 setTimeout 将在有机会时在指定时间后尽快运行。两者是不相容的。您正在设置数百万个计时器并期望结果不同。

您是指 if 而不是 while 吗?因为那会起作用,如果您随后将 dequeue 调用放在相应的 else 中。

关于javascript/jquery 循环导致忙等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com