JS 单线程又是如何实现异步的呢?
是通过的事件循环(event loop),理解了 event loop 机制,就理解了 JS 的执行机制
按照这种分类方式:JS 的执行机制是
- 首先判断 JS 是同步还是异步,同步就进入主线程,异步就进入 event table
- 异步任务在 event table 中注册函数,当满足触发条件后,被推入 event queue
- 同步任务进入主线程后一直执行,直到主线程空闲时,才会去 event queue 中查看是否有可执行的异步任务,如果有就推入主线程中 以上三步循环执行,这就是 event loop
JS 的执行机制是
执行一个宏任务,过程中如果遇到微任务,就将其放到微任务的【事件队列】里 当前宏任务执行完成后,会查看微任务的【事件队列】,并将里面全部的微任务依次执行完 重复以上 2 步骤,结合 event loop(1) event loop(2) ,就是更为准确的 JS 执行机制了。