javascript - jQuery 对此有何 react ?

标签 javascript jquery

假设我们在某个 div 上收到了一个 onClick 事件,但在此之前,我们需要使用 jQuery 完成一项大型计算,这大约需要 3 秒jQuery 当前正忙,因此它无法识别我的事件调用。

因此,1 秒钟过去了,我点击了该框。什么都没发生? 2秒。什么都没发生? 3 秒,jQuery 完成当前任务。我的 onclick jQuery 事件有效,框消失了。

问题是; 在这种情况下 jQuery 会做什么?自动创建一个线程来立即执行我的 onclick 事件?排队通话? (所以它会在任务完成时执行我的 3 次点击,因此有 3 个事件调用)完全忽略前 2 个调用?另外,我应该怎么做才能避免此类问题?

最佳答案

JavaScript 就像单线程一样运行。据我了解,某些浏览器在实际实现方面有所不同,但编写脚本时期望它们将线性执行是安全的。

See this Question

我想您的浏览器会在 UI 被阻止期间对点击进行排队,但由浏览器决定如何处理这种情况。 (我的 Chrome 在阻塞的 UI 期间排队点击事件)

也就是说,在较新的浏览器中实现了一个很酷的功能:

Web Workers

它允许您在不阻塞 UI 的情况下在后台执行昂贵/长时间的操作。如果您的脚本将在大多数新浏览器上运行,则可能值得深入研究此功能。奖励:那篇文章是由 jQuery 的鼻祖写的! =)

关于javascript - jQuery 对此有何 react ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783452/

相关文章:

javascript - 获取 jQuery 的 $(selector).each() 'element' 参数与 $(this) 之间的区别

javascript - 滚动后如何放置窗口中心的div

javascript - 无效的主机头 Heroku Node.js React 应用程序

javascript - Azure Blob 存储请求的资源错误上不存在 Access-Control-Allow-Origin header

javascript - jquery scrollTop 动画完成后滚动触发

jquery - 当#div.load 出错时向div 添加一个类?(Jquery)

javascript - jQuery .after() 在 IE 中不工作

javascript - tabulator - 如何提取数据并保存为 json 对象

javascript - 如何使用API​​调用(jssor_slider1.$GoTo(N))

jQuery-:focus Triggering When Switching Windows/Tabs