js阻塞

本文深入探讨JavaScript的单线程特性及其导致的阻塞问题。异步编程是关键,允许任务在不干扰主线程的情况下执行。当JS执行时间过长,渲染线程会等待,造成页面阻塞。解决方法包括采用异步处理,如setTimeout,以避免长时间运行的脚本阻碍页面渲染。将任务分解并适时使用异步操作,能有效提高网页性能。
摘要由CSDN通过智能技术生成

介绍

本文将介绍 js 阻塞的相关知识,以及解决办法

需了解的东西

1. 异步编程概念

异步是什么?
图片来自runoob.com
简单来说就是把要执行的东西在某个时间段内一块执行。

2. Js 单线程

众所周知Js 的执行是从上至下的,Js同一个时间只能做一件事。所有任务需要排队,前一个任务结束,才会执行后一个任务。 如果前一个任务耗时很长,后一个任务就会等着前面的任务执行完成再执行。

渲染线程和JS线程

两个任意一个在运行的时候,另一个都是处于等待状态。倘若不是的话,假如js修改了一个元素的属性,但是渲染进程还没渲染到该元素,那js修改属性就会失败。所以把他们定为互斥是很有必要的。

所以也就有了上面所说的页面阻塞问题,因为js线程一直卡死未结束,那渲染线程将会一直等待,所以为了避免阻塞,js代码一定要避免执行时间长,而且也推荐将js代码放在html代码之后,以防止阻塞渲染。


解决Js 阻塞问题

将一个任务分成多个任务执行。使用异步处理;

推荐使用
setTimeout(function () {
这里写要执行的代码
}, 3000);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值