当前位置: 首页 > news >正文

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 操作、定时器、事件处理等场景。

http://www.lryc.cn/news/66632.html

相关文章:

  • Nuvoton NK-980IOT开发板 u-boot 编译
  • OpenCL使用CL_MEM_USE_HOST_PTR存储器对象属性与存储器映射
  • 浅谈osgEarth操控器类的createLocalCoordFrame函数如何将局部坐标系的点转为世界坐标系下的Martix(ENU坐标)
  • PHP程序员和Python程序员的职业前景怎么样?我来聊聊自己的体会
  • 【MATLAB图像处理实用案例详解(8)】—— 图像数字水印算法
  • 最全的免费SSL证书申请方式
  • Ceph入门到精通-CrushMap算法概述
  • 如何利用API做好电商,接口如何凋用关键字
  • Give me a logic game idea about economics
  • 测试之路,2023年软件测试市场领域有哪些变化?突破走得更远...
  • 配置Windows终端直接执行Python脚本,无需输入“python“
  • IDEA快捷键
  • 关于c++指针数组的要设置初值的情况
  • 泰克RSA306B频谱分析仪测试信道功率方法
  • 深度学习技巧应用12-神经网络训练中批归一化的应用
  • Masonry使用以及源码解析(未完待续
  • 118-Linux_数据库_索引
  • macos和windows区别 macos怎么运行windows程序
  • 一起Talk Android吧(第五百四十二回:无进度值ProgressBar)
  • Oracle DataGuard奇怪的ORA-16494错误
  • 《花雕学AI》Poe 一站式 AI 工具箱:ChatGPT4 体验邀请,亲,不要错过哦!
  • AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘
  • Origin如何绘制基础图形?
  • OpenGL(九)——颜色
  • Python语言技术指南:探索功能丰富的高级编程语言
  • 【YOLO 系列】YOLO v4-v5先验知识
  • 4年外包终于上岸,我只能说别去....
  • Nginx快速入门
  • Leetcode507. 完美数
  • c++ 11标准模板(STL) std::vector (九)