线程
- 浏览器UI线程:基于队列系统
- Worker:在UI线程之外运行的代码
每一个Web worker——有一个自己的执行环将。 - 异步
- 用户交互——>任务添加进队列——>UI线程执行;
- js运行时,不会更新UI; 不会像UI队列中添加交互时产生的新任务——>失去响应,挂起、假死;
浏览器使用单一线程公用于执行JavaScript和更新用户界面。
总结
- 任何JavaScript任务都不应该执行超过100毫秒。过长的运行时间会导致UI更新出现明显的延迟,从而对用户体验产生负面的影响
- JavaScript运行期间,浏览器响应用户交互的行为存在差异,无论如何,JavaScript长时间运行将导致用户体验变得混乱和脱节。
- 定时器可以用来安排代码延迟执行,他使得你可以把长时间运行脚本分解成一系列的小任务。
- Web Workers 是新版浏览器支持的特性, 他允许你在UI线程外部执行JavaScript代码,从而避免锁定UI。