js 事件循环 (Event Loop)
1. js为什么是单线程?
一般情况下,js程序是自上往下,自左往右(不考虑优先级)顺序执行的。
作为一种浏览器脚本语言,js的主要用途是操作DOM,实现用户与页面的交互。如果多个程序可以同时执行,会带来很复杂的同步问题,执行的结果可能不是开发者想要的
注:单线程指的是浏览器提供的js引擎线程(主线程)只有一个,浏览器还会有http请求线程、定时触发线程、事件触发线程等
2. 同步和异步
同步:先执行完前面的任务才能继续执行下一个任务,如果前面存在未执行完的任务,后面任务必须排队等待
异步:在执行某个任务过程中会花费很长的时间,可以先把这个任务挂起,等待空闲的时候再回头去执行这个任务。(异步的实现是通过浏览器的其它线程辅助实现的,并没有违背js单线程的特点)
事件循环的过程
a、JS 在解析一段代码时,会将同步代码按顺序排在某个地方,即执行栈,然后依次执行里面的函数
b、当遇到异步任务时就交给其他线程处理,待当前执行栈所有同步代码执行完成后,会从一个队列中去取出已完成的异步任务的回调加入执行栈继续执行,遇到异步任务时又交给其他线程
c、如此循环往复...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律