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

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

时间:2023-03-08 13:46:36浏览次数:45  
标签:异步 浏览器 试题 渲染 单线程 主线 JS

  1. JS是⼀⻔单线程的语⾔,这是因为它运⾏在浏览器的渲染主线程中,⽽渲染主线程只有⼀个。
  2. ⽽渲染主线程承担着诸多的⼯作,渲染⻚⾯、执⾏ JS 都在其中运⾏。如果使⽤同步的⽅式,就极有可能导致主线程产⽣阻塞,从⽽导致消息队列中的很多其他任务⽆法得到执⾏。
  3. 这样⼀来,⼀⽅⾯会导致繁忙的主线程⽩⽩的消耗时间,另⼀⽅⾯导致⻚⾯⽆法及时更新,给⽤户造成卡死现象。
  4. 所以浏览器采⽤异步的⽅式来避免。具体做法是当某些任务发⽣时,⽐如计时器、⽹络、事件监听,主线程将任务交给其他线程去处理,⾃身⽴即结束任务的执⾏,转⽽执⾏后续代码。
  5. 当其他线程完成时,将事先传递的回调函数包装成任务,加⼊到消息队列的末尾排队,等待主线程调度执⾏。在这种异步模式下,浏览器永不阻塞,从⽽最⼤限度的保证了单线程的流畅运⾏。

标签:异步,浏览器,试题,渲染,单线程,主线,JS
From: https://www.cnblogs.com/crispyChicken/p/17191733.html

相关文章

  • JS 中的计时器能做到精确计时吗?为什么?
    参考答案:不⾏,因为:计算机硬件没有原⼦钟,⽆法做到精确计时操作系统的计时函数本身就有少量偏差,由于JS的计时器最终调⽤的是操作系统的函数,也就携带了这些偏差按照W3C......
  • 阐述⼀下 JS 的事件循环
    事件循环⼜叫做消息循环,是浏览器渲染主线程的⼯作⽅式。在Chrome的源码中,它开启⼀个不会结束的for循环,每次循环从消息队列中取出第⼀个任务执⾏,⽽其他线程只需要在合......
  • js 简单的深拷贝
    本题是通过@郝晨光 的文章受到的启发,学习来的,大家有兴趣可以看一下,而且我觉得这种写法非常通俗易懂,工作中也足够去使用了。functionDeepClone(target){letresult......
  • JS上传文件夹的三种解决方案
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{......
  • 4_JSON格式
    ​ AJAX数据格式处理响应普通文本数据如果服务器给我们响应的数据非常简答,那么使用字符串就好了,不需要我们做复杂的处理,后台编码也简单.页面代码<%@pageconten......
  • js中 getTime 注意的点
     坐标:北京 问题:一直以为newDate(1970,0,1,0,0,0).getTime()===0实际newDate(1970,0,1,8,0,0).getTime()===0 详细: 摘自菜鸟  ......
  • 4_JSON格式
    ​ AJAX数据格式处理响应普通文本数据如果服务器给我们响应的数据非常简答,那么使用字符串就好了,不需要我们做复杂的处理,后台编码也简单.页面代码<%@pageconten......
  • Python常见面试题010. Python的整形占多大内存?
    010.Python的整形占多大内存?示例代码importsysa=0print(a.__sizeof__())#24print(sys.getsizeof(a))#24所以答案是24?并不是!看下面importsysb=1pr......
  • js读取href中的参数函数
    functionGetQueryValue(queryName){ varquery=decodeURI(window.location.search.substring(1)); varvars=query.split("&"); for(vari=0;i<vars.lengt......
  • VSCode调试js代码的几种方式
    背景  在leetcode刷题时需要调试js代码  代码写在.js文件中 方式一node.js  安装node.js  配置launch.json      左侧【运行和调试】,【F5】启动调......