Dav*_*vid 26 browser gwt scheduling event-handling
我有一个艰难的时间,了解各种方法之间的差异com.google.gwt.core.client.Scheduler接口,具体而言,scheduleDeferred,scheduleFinally,和scheduleIncremental方法.
我认为,由于我不熟悉调度程序文档所涉及的浏览器事件处理循环,因此我的理解受到了阻碍.
您能否解释一下这些方法之间的区别,以及它们如何与浏览器事件循环相关联?
Chr*_*her 43
JavaScript(在浏览器中)是单线程的.事件循环模型意味着,我们总是处于以下两种状态之一:
有很多种事件:点击事件,onload事件,XHR事件,计时器事件......你必须声明一些处理程序(在页面加载期间至少有一个),否则你的代码都不会被执行.其中之一是您通过实现指定的处理程序onModuleLoad.
保持所有处理程序简短是很重要的,因为没有并行性和没有中断(除了最后的"无响应脚本"中断).这意味着,用户无法与界面交互,直到浏览器返回到事件循环 - 并且在当前处理程序完成之前不会发生.
因此,如果您想将某些代码推迟到其他事件处理程序有机会之后,那么您可以使用Scheduler.scheduleDeferred.
Scheduler.scheduleIncremental 帮助您将长时间运行的任务分成多个步骤,为其他事件处理程序提供每个步骤之间的机会.
Scheduler.scheduleFinally 只是意味着:在处理我们当前的处理程序后(即使发生异常),但在返回事件循环之前,执行我的命令.
请参阅com.google.gwt.core.client.impl.Impl.entry0()
| 归档时间: |
|
| 查看次数: |
13168 次 |
| 最近记录: |