js为什么会阻塞渲染, 什么是异步?

javaScript 是单线程执行的语言,它的执行机制是基于事件循环模型的。当 JavaScript 执行代码时,如果遇到阻塞(如执行时间较长的代码、同步的网络请求、计算密集型操作等),则会阻塞 JavaScript 引擎的执行,直到阻塞的操作完成才能继续执行下面的代码。

由于渲染页面也是由 JavaScript 引擎执行的,因此当 JavaScript 执行阻塞操作时,会阻塞渲染进程的执行,导致页面出现卡顿、失去响应等现象,影响用户体验。

例如,在 JavaScript 中执行一个循环,如果循环次数较多,会导致 JavaScript 引擎长时间占用 CPU,阻塞其他代码的执行,包括渲染进程的执行,从而导致页面出现卡顿现象。

JavaScript 中的异步指的是在执行代码时,某些操作会被推迟到后面再执行。与同步代码不同,异步代码不会阻塞程序的执行。当异步操作完成后,它会通知 JavaScript 引擎并将结果传递给处理函数进行处理。

JavaScript 中常见的异步操作包括:

定时器:使用 setTimeout 或 setInterval 函数设置定时器,在指定的时间后执行回调函数。

网络请求:使用 XMLHttpRequest 或 fetch 函数发起网络请求,请求完成后触发回调函数处理返回结果。

事件处理:在 DOM 元素上注册事件处理函数,当事件发生时触发回调函数。

Promise:使用 Promise 封装异步操作,通过 then 方法链式调用多个异步操作,处理操作结果。

async/await:使用 async 和 await 关键字简化 Promise 的使用,以同步的方式编写异步代码。

在 JavaScript 中,异步操作通常使用回调函数、Promise、async/await 等机制来处理操作完成后的结果。异步编程可以帮助提高程序的性能和响应性,避免程序的阻塞和卡顿现象,常用于处理网络请求、I/O 操作、定时器、事件处理等场景。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼起码是条鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值