events - 什么是浏览器事件循环?

标签 events gwt browser deferred-execution event-loop

我一直在使用 GWT 进行一些 Web 应用程序编程,并且对“浏览器事件循环”这个术语感到困惑。

我遇到过需要在浏览器事件循环完成后执行延迟命令和“做某事”的情况。

我想知道它到底是什么以及在事件循环过程中发生了什么以及以什么顺序?

最佳答案

浏览器事件循环是由浏览器启动的一个线程,它不断地扫描和运行不同的事件,就像听起来一样。当事件发生时,它们被放入事件队列并由一个事件线程依次运行。您的 javascript 不应该创建自己的循环等待它完成或类似的事情......它会阻止一个连续的事件循环线程。相反,您将使用 setTimeout 或 setInterval 之类的东西并检查您正在等待的任何条件,以便浏览器可以在它“等待”时工作。

GWT 很好,因为它可以在某种程度上使用 scheduler 来选择这个过程。 - 在您想在事件循环“完成”后运行某些东西的情况下,您可能需要使用 scheduleFinally 或 scheduleDeferred。它会将一段代码的处理程序注入(inject)事件队列,以便它将在当前执行上下文中的所有其他代码之后运行(当前执行上下文==您在当前 JavaScript 对象层次结构中的任何位置,窗口为根object) 运行,但在放入队列中的下一个事件之前。

关于events - 什么是浏览器事件循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425863/

相关文章:

c# - TreeView(带有复选框)没有正确处理点击?

javascript - JQuery Mousehold 插件的问题

eclipse - 项目 XXX 在其构建路径上没有任何 GWT SDK

javascript - 为什么在 React componentDidMount 中获取不到 DOMNode 的样式(scrollHeight)?

html - <html> 上的 box-shadow inset 仅在网站的可视部分有效

JavaScript/浏览器 : when does event dispatching exactly happen?

debugging - Chrome 中的 gwt super 开发模式调试不显示源映射中变量的调试值

GWT 日期处理...让客户端尊重服务器的时区

javascript - 我怎样才能 "performance detect"浏览器

c# - 检测用户是否在 WPF 中移动了窗口