如何理解JS中的异步

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

相关推荐
Want5956 小时前
C/C++圣诞树①
c语言·开发语言·c++
生擒小朵拉6 小时前
STM32添加库函数
java·javascript·stm32
老赵的博客6 小时前
c++ 杂记
开发语言·c++
jimmy.hua6 小时前
[C++刷怪笼]:set/map--优质且易操作的容器
开发语言·c++
tuokuac6 小时前
nginx配置前端请求转发到指定的后端ip
前端·tcp/ip·nginx
程序员爱钓鱼6 小时前
Go语言实战案例-开发一个Markdown转HTML工具
前端·后端·go
万少6 小时前
鸿蒙创新赛 HarmonyOS 6.0.0(20) 关键特性汇总
前端
还有多远.7 小时前
jsBridge接入流程
前端·javascript·vue.js·react.js
蝶恋舞者7 小时前
web 网页数据传输处理过程
前端
非凡ghost7 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求