作者:拉扯作乱_991 | 来源:互联网 | 2023-06-05 14:20
关于执行时候太长的剧本,有的浏览器会弹出正告,说页面无相应。有的浏览器会直接停止剧本。总而言之,浏览器不愿望某一个代码块长时候处于运转状况,由于js是单线程的。一个代码块长时候运转
关于执行时候太长的剧本,有的浏览器会弹出正告,说页面无相应。有的浏览器会直接停止剧本。总而言之,浏览器不愿望某一个代码块长时候处于运转状况,由于js是单线程的。一个代码块长时候运转,将会致使其他任何使命都必须守候。从用户体验上来讲,很有可能发作页面衬着卡顿或许点击事宜无相应的状况。
假如一段剧本的运转时候凌驾5秒,有些浏览器(比方Firefox和Opera)将弹出一个对话框正告用户该剧本“没法相应”。而其他浏览器,比方iPhone上的浏览器,将默许停止运转时候凌驾5秒钟的剧本。–《Javascript忍者秘笈》
Javascript忍者秘笈里有个很好的比方:页面上发作的各种事变就好像一群人在议论事变,假如有个人一向在说个不断,其他人一定不乐意。我们愿望有个裁判,定时的切换其他人来讲话。
Js应用定时器来剖析使命,症结点有两个。
- 按什么维度去剖析使命
- 使命的现场保留与现场恢复
例子
请求:动态建立一个表格,一共10000行,每行10个单元格
一次性建立
统共耗时180ms, 浏览器已给出正告![Violation] 'setTimeout' handler took 53ms
。
分批次动态建立
此次异步按批次建立,没有耗时的正告。由于掌握了每次代码在50ms内运转。实际上每80行耗时约10ms摆布。这就不会引发页面卡顿等题目。