首先js是一门单线程语言,一次只能执行一件事情,而浏览器是多线程的
js只能在宿主环境下运行,也就是浏览器,node.js里运行
当 定时器,用户触发事件,以及发送网络请求时就会产生对应的任务
浏览器的主线程依次取出任务来执行,此过程不断重复而形成事件循环
当任务排队执行是,浏览器会把任务分为宏任务和微任务
宏任务:JavaScript 定时器 dom事件
微任务:pormise.then 等等
直接贴图分析
下图还存在定时器插队,虽然T2定时器比T3定时器先被识别为异步任务,但是T3定时器先把数据放入队列执行,T2在5秒后才会放入
如果是嵌套关系的定时器,是不会存在插队的