我一直在使用 GWT 进行一些 Web 应用程序编程,并且对“浏览器事件循环”这个术语感到困惑。
我遇到过需要在浏览器事件循环完成后执行延迟命令和“做某事”的情况。
我想知道它到底是什么以及在事件循环过程中发生了什么以及以什么顺序?
我一直在使用 GWT 进行一些 Web 应用程序编程,并且对“浏览器事件循环”这个术语感到困惑。
我遇到过需要在浏览器事件循环完成后执行延迟命令和“做某事”的情况。
我想知道它到底是什么以及在事件循环过程中发生了什么以及以什么顺序?
浏览器事件循环是由浏览器启动的线程,它不断地扫描和运行不同的事件,就像听起来一样。当事件发生时,它们被放入事件队列并由一个事件线程依次运行。您的 javascript 不应该创建自己的循环等待它完成或类似的东西......它会阻止一个连续的事件循环线程。相反,您将使用 setTimeout 或 setInterval 之类的东西并检查您正在等待的任何条件,以便浏览器可以在它“等待”时工作。
GWT 很好,因为它可以在某种程度上使用调度程序来选择这个过程——在你想要在事件循环“完成”之后运行某些东西的情况下,你可能想要使用 scheduleFinally 或 scheduleDeferred。它会将一段代码的处理程序注入事件队列,以便它将在当前执行上下文中的所有其他代码之后运行(当前执行上下文==您在当前 JavaScript 对象层次结构中的任何位置,窗口为根object) 运行,但在放入队列中的下一个事件之前。