企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[toc] #### 任务队列: 1.Js是**单线程**的,只有一个调用栈,按照先入先出的规则进行, 2.执行调用栈的时候会先执行同步任务 3.遇到异步任务会先放到**异步任务队列**中,异步任务队列包括宏任务和微任务 4.DOM的渲染也是一种任务,如果script标签在dom之前,就会等待script内容加载完再渲染 #### 宏任务 1.新程序或子程序被直接执行:如 script 标签中的代码 2.事件的回调函数:如鼠标点击的触发事件,里面的回调函数就会被添加到宏任务队列 3.setInterval和setTimeout, setImmediate(只有ie支持) ``` setTimeout不一定是马上添加到任务队列, 定时器有专门的定时器加载模块,等定时器执行完了,会立即放到宏任务队列 但是setTimeout(() =>{}, 0)这种时间为0的会立即放到定时器模块 ``` 4.UI rendering 等 #### 微任务 1.Promise.then().catch().finally() 2.MutationObserver 3.Object.observe 4.nodejs中的process.nextTick() #### 事件循环event loop 1.event loop会先清空了调用栈, 2.再先执行微任务队列中的任务,把微任务队列的任务清空 3.再去执行宏任务