首页 > 其他分享 >面试题:如何理解 JS的异步?

面试题:如何理解 JS的异步?

时间:2023-06-03 15:12:29浏览次数:43  
标签:异步 面试题 浏览器 渲染 主线 JS 执行

JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个而渲染主线程承担着诸多的工作,渲染页面、执行 JS 都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一方面会导致繁忙的主线程白白的消耗时间,另一方面导致页面无法及时更新,给用户造成卡死现象。
所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时,比如计时器、网络、事件监听,主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的未尾排队,等待主线程调度执行。在这种异步模式下,浏览器永不阻塞,从而最大限度的保证了单线程的流畅运行。

标签:异步,面试题,浏览器,渲染,主线,JS,执行
From: https://www.cnblogs.com/tuxiaotu/p/17453993.html

相关文章

  • 时间戳转化“刚刚”、“几小时前”、“几天前”、“几周前”等形式的js代码片段
    代码片段(可用于vue过滤器)functiongetTimeStr(timestamp){ constnow=newDate(); constdate=newDate(timestamp); constdiff=(now-date)/1000;//毫秒转换为秒 if(diff<60){   return"刚刚"; }elseif(diff<3600){   returnMath.f......
  • nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
    转载请注明出处:1.Eggjs特性:Eggjs是Node.js服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是Egg.js的一些特性和作用:框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。Egg.js遵循MVC......
  • 深度解析JSTL标签库
    1. 什么是JSTL标签库?  53  - Java Standard Tag Lib(Java标准的标签库)  - JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。  - 标签是写在JSP当中的,但实际上最终还是要执行对应的java程序。(java程序在jar包当中。)2. 使用JSTL标签库的步骤:532.1......
  • js使用xlsx插件导出table中的数据
    js代码需要引入<scripttype="text/javascript"src="static/js/xlsx.core.min.js"></script>//导出excelfunctiontoExcel(){varblob=sheet2blob(XLSX.utils.table_to_sheet($('table')[0]));......
  • js 动态添加样式
    //添加css脚本exportconstloadStyle=url=>{constlink=document.createElement('link');link.type='text/css';link.rel='stylesheet';link.href=url;consthead=document.getElementsByTagName('head&......
  • 使用JS来实现tab栏切换
    所以今天我就来把我学的写成文章给大家欣赏一下下HTML部分标题部分<h3>然后导航栏我们使用ulli加a的布局实现然后第二个盒子开始放图片,放图片需要注意路径噢,不然回显示不出来<divclass="tab"><divclass="tab-nav"><h3>每日特价</h3><ul><li><aclas......
  • JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用
    场景记录JVM中常用工具。jps:虚拟机进程状态工具jps(JVMProcessStatusTool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(MainClass,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。命令格式:jps[options][hostid]示例:jps-l 选项:-q 只......
  • json 注意点
    1、特殊符号\n的转换逻辑importjsonx={'test':"测试\n"}#python中的字典结构x_json=json.dumps(x,ensure_ascii=False)x_json#'{"test":"测试\\n"}'这里看上去稍微有一点特殊,本质就是转义json字符串。print(x_json)#{"test&qu......
  • 如何使用JavaScript格式化日期 – JS中的日期格式化
    日期是许多JavaScript应用程序的基本组成部分,无论是在网页上显示当前日期还是处理用户输入以安排事件。但以清晰一致的格式显示日期对于积极的用户体验至关重要。在本文中,我们将探讨在JavaScript中格式化日期的各种技术,使您能够以您的应用程序所需的格式显示日期。(前端教程......
  • jsocks代理服务器和客户端的试用
    jsocks的项目位于:[url]http://jsocks.sourceforge.net/[/url]在GoogleCode上还有个对应的mirror的项目,是Google创建的,做了一些修改,看来Google是用到了它:[url]http://code.google.com/p/jsocks-mirror/[/url]上面的项目包括SOCKS代理服务器和......