介绍
本文将介绍 js 阻塞的相关知识,以及解决办法
需了解的东西
1. 异步编程概念
异步是什么?
简单来说就是把要执行的东西在某个时间段内一块执行。
2. Js 单线程
众所周知Js 的执行是从上至下的,Js同一个时间只能做一件事。所有任务需要排队,前一个任务结束,才会执行后一个任务。 如果前一个任务耗时很长,后一个任务就会等着前面的任务执行完成再执行。
渲染线程和JS线程
两个任意一个在运行的时候,另一个都是处于等待状态。倘若不是的话,假如js修改了一个元素的属性,但是渲染进程还没渲染到该元素,那js修改属性就会失败。所以把他们定为互斥是很有必要的。
所以也就有了上面所说的页面阻塞问题,因为js线程一直卡死未结束,那渲染线程将会一直等待,所以为了避免阻塞,js代码一定要避免执行时间长,而且也推荐将js代码放在html代码之后,以防止阻塞渲染。
解决Js 阻塞问题
将一个任务分成多个任务执行。使用异步处理;
推荐使用
setTimeout(function () {
这里写要执行的代码
}, 3000);