JS运行机制
了解JavaScript的人都知道,它是单线程运行的,简单的说就是,在执行过程中,代码只能从上往下逐步执行,所以在同步代码执行中,异步代码只有等待同步代码执行结束才会添加回事件队列中。
同步代码:依次存放到执行栈中,以LIFO(后进先出)原则;
异步代码:存放在任务队列中,任务队列又分为宏任务和微任务,以LIFO(后进先出)原则;
宏任务和微任务
为了让读者知道宏任务和微任务是什么,所以在这里我们也简单的了解一下它们。
犹如上面所说的:
在执行代码的时候,分为同步和异步,它们分别放在执行栈(同步),任务队列中(异步)
那么任务队列中又会分出两项执行顺序来,那就是宏任务和微任务。
怎么区分是宏任务还是为任务呢?
宏任务:包括整体代码script,setTimeout,setInterval等
微任务:Promise,process.nextTick等
宏任务和微任务也区分执行顺序,微任务执行优先级高于宏任务
一下流程图便能知晓它们的执行流程和顺序
![62a25157e79b3ad955df90740ecc249d.png](https://i-blog.csdnimg.cn/blog_migrate/ce26c83c85dd6f73e8b8e72bcf669359.jpeg)
按照自己了解的程度画出这个图,将就着看吧
事件循环Event Loop是javascript的执行机制。
只要知道Javascript本身就是一门单线程语言,但事件循环 event Loop 是实现异步的一种方法。