我一直在使用GWT进行一些web应用程序编程,但一直被“浏览器事件循环”这个术语搞糊涂了。
我遇到过需要执行延迟命令并在浏览器事件循环完成后“做点什么”的情况。
我想知道它到底是什么,在事件循环过程中会发生什么,顺序是什么?
发布于 2011-03-25 06:08:35
浏览器事件循环是由浏览器启动的线程,它不断地扫描和运行不同的事件,就像它听起来的那样。当事件发生时,它们被放入事件队列中,并由一个事件线程依次运行。你的javascript不应该创建自己的循环等待它完成,否则像that...it这样的东西会阻塞一个连续的事件循环线程。相反,你可以使用像setTimeout或setInterval这样的工具,检查你正在等待的任何条件,这样浏览器就可以在“等待”的同时工作。
GWT很好,因为它可以在某种程度上使用scheduler来选择这个过程--在您希望在事件循环“完成”之后运行某些东西的情况下,您可能希望使用scheduleFinally或scheduleDeferred。它将一段代码的处理程序注入到事件队列中,以便它在当前执行上下文(当前执行上下文==,无论您在当前JavaScript对象层次结构中以窗口作为根对象)中的所有其他代码运行之后,但在放置在队列中的下一个事件之前运行。
https://stackoverflow.com/questions/5425863
复制相似问题