1. javascript 是单线程的
同步和异步: 立即执行的任务队列就是同步任务,异步任务有函数,定时器,http请求,promise等等。
事件循环:同步任务进入主线程,立即执行,执行之后异步任务进入主线程,这样循环
宏观和微观任务:
先执行微观任务( Micro Task),再执行宏观任务(Macro Task )
Micro Task:promise、process.nextTick(Node.js 环境)
Macro Task:setTimeout、setTimeInterval、script整体、UI交互、I/O、setImmediate(Node.js 环境)
<script type="text/javascript"> console.log('开始') new Promise(resolve => { setTimeout(() => { console.log('t1') }) console.log('p1') resolve() }).then(() => { console.log('p2') }) setTimeout(() => { console.log('t2') }) console.log('结束') </script>
结果: