首页 > 其他分享 >如何理解js的异步

如何理解js的异步

时间:2024-08-05 19:54:39浏览次数:7  
标签:异步 浏览器 渲染 主线 js 理解 执行

  js是一门单线程的语言,这是因为他运行在浏览器的渲染主线程中,而渲染主线程只有一个,渲染主线程担任着诸多的工作,渲染页面、执行js、css

、计时器等等都在其中运行。 如果使用同步的方式,就很有可能会导致主线程堵塞,从而导致消息队列中的其它任务无法进行执行,这样一来,一方面会导致繁

忙的主线程白白的浪费时间,另一方面导致浏览器页面无法及时的更新,给用户造成卡死的现象。

  所有浏览器采用异步的方式来避免,具体做法是当某些任务发生时,比如计时器、网络、时间监听,主线程将任务交给其它线程进行处理,自身立即结束任务的

执行,转而执行后续代码,当其他线程完成时,将实现传递的回调函数包装成任务,加入到消息队列的末尾排队,等待主线程调度执行。

  在这种异步的模式下,浏览器永不阻塞,从而最大限度保证了单线程的流程执行。

标签:异步,浏览器,渲染,主线,js,理解,执行
From: https://www.cnblogs.com/pengrq/p/18343947

相关文章

  • 一些八股:1.fetch 的理解。2.let、const、var
    一、说说你对Fetch的理解,它有哪些优点和不足?FetchAPI是现代JavaScript中用于进行网络请求的接口,旨在替代传统的XMLHttpRequest。它提供了一种更简单、更灵活的方法来获取资源和与服务器进行交互。下面,我将详细介绍Fetch的优点和不足。Fetch的优点:语法简洁直观:Fetch......
  • JSON parse error: Cannot deserialize instance of `java.lang.Long` out of START_O
    这个问题的实际原因就是:    后端id(Long类型)用的雪花算法生成主键id    后端生成id位:1820397662671867904    前端查询id的结果为:1820397662671868000产生的原因:    后端生成为19位,前端接受并展示,使用的类型是number类型是16位   ......
  • 从JS到Vue
    JavaScript-Vue JS引入方式基础语法输出语句 变量数据类型运算符函数对象ArrayStringJSONBOMWindowLocationDOM获取元素案例 事件事件绑定常见事件案例Vue快速入门指令v-bind和v-modelv-onv-if与v-showv-for案例生命周期 JS引入方式......
  • 深⼊理解指针(4)
    1.回调函数是什么?2.qsort使⽤举例3.qsort函数的模拟实现1.回调函数是什么?1.回调函数是什么?回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是......
  • Kotlin 布尔值教程:深入理解与应用示例
    Kotlin布尔值在编程中,您经常需要一种只能有两个值的数据类型,例如:是/否开/关真/假为此,Kotlin有一种布尔数据类型,可以取true或false值。布尔值布尔类型可以用Boolean关键字声明,并且只能取true或false值:示例valisKotlinFun:Boolean=truevalisFish......
  • Kotlin 布尔值教程:深入理解与应用示例
    Kotlin布尔值在编程中,您经常需要一种只能有两个值的数据类型,例如:是/否开/关真/假为此,Kotlin有一种布尔数据类型,可以取true或false值。布尔值布尔类型可以用Boolean关键字声明,并且只能取true或false值:示例valisKotlinFun:Boolean=truevalisFi......
  • nodejs遇到的一个小问题分享给大家
    今天在调试项目的时候突然发现  const{name}=ctx.request.body 无法接收到参数了,后来检查了一下代码发现路由中间件和bodyparser中间件的加载顺序错了,导致无法接收参数,正确应该是这样:app.use(bodyParser());app.use(router.routes()).use(router.allowedMethods());......
  • 记一次JSF异步调用引起的接口可用率降低
    前言本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程,主要介绍了排查思路和JSF异步调用的流程,希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路。本文分析的JSF源码是基于JSF1,7.5-HOTFIX-T6版本。起因问题背景1.广告投放系统是典型的I/O密......
  • 《Three.JS零基础入门教程》第一篇:搭建开发环境
    本教程由新中地GIS开发高级讲师李俊杰老师出品,由浅入深,循序渐进,深入浅出的分析web3D中的核心概念。网格模型场景相机光影动画模型加载学习Three.js对于GIS开发是有很多帮助的。Three.js是一个基于JavaScript的3D图形库,它可以在网页上创建交互式的3D图形和动画效果。......
  • 深入理解 Scikit-Learn 中的 fit, transform 和 fit_transform
    #深入理解Scikit-Learn中的fit,transform和fit_transform在使用Scikit-Learn进行数据处理和机器学习建模时,经常会遇到三个重要的方法:`fit`、`transform`和`fit_transform`。它们是Scikit-Learn中用于数据预处理、特征提取和模型训练的核心方法。本文将详细解释这......