面完腾讯微信后(凉了),发现自己的知识很多都没有形成比较高的层面上的理解,这是其中一道题:“了解事件循环吗?”
因为是总监面,关于讲解事件循环机制来讲,可能需要从大一点的方面去进行说明(以下为个人理解)
- 了解一个点,那就是JavaScript运行的时候是单线程。当运行过于庞大的任务时,会导致网页无响应。因此JS中就出现了异步机制,为了能够执行这些异步任务,也就出现了事件循环。
- 事件循环过程中,首先运行主程序,执行过程中,遇到setTimeout,setInterval的话,就把这些函数中对应的任务放到宏任务异步等待队列,如果在运行宏任务的过程中,遇到用Promise机制包裹的任务,或者是async和await内部产生的promise任务,或者是process.nextTick,就把这这些任务放到一个宏任务对应的微任务等待队列中,当当前的宏任务执行完成后,执行对应的微任务队列中的任务。
- 遵照上述的原则进行循环。
可以看看以下的图片:
宏任务和微任务的执行机制
网友评论