什么是浏览器事件循环?

gof*_*ddy 18 browser events gwt event-loop deferred-execution

我一直在使用GWT进行一些Web应用程序编程,并且被术语"浏览器事件循环"搞糊涂了.

我遇到过需要执行延迟命令并在浏览器事件循环完成后"执行某些操作"的情况.

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

Ich*_*rus 18

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

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