1.js是单线程语言
2.JS的执行机制是Event Loop。
一。单线程。异步执行。
JS 单线程的异步执行是通过事件循环(Event Loop)。Event Loop执行顺序:
1.首先判断JS同步还是异步,同步进主进程,异步进event table.
2.异步任务在event table中注册函数,当满足触发条件后,被推入event queue
3.同步任务进入主线程后一直执行,直到主线程空闲时,才会去event queue中查看是否有可执行的异步任务,如果有就把她拉进主进程。
按照同步异步划分不是最准确的,准确的划分方式是这样的:
宏任务:script,setTimeout,setInterval
微任务:promise, process, nectTick
这样就产生了一个新的执行顺序,如下:
1.执行一个宏任务,过程中如果遇到微任务,就将其放到微任务的“事件队列”里
2.当前宏任务执行完成后,会查看微任务的“事件队列”,并将里面的 全部微任务依次执行完。
3.重复上面两个步骤。