js同步异步、事件循环(宏观任务、微观任务)

我们都知道JavaScript 是单线程,同一个时间只能做一件事。所有任务需要排队,当前队列的任务也分为两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous),在所有同步任务执行完之前,任何的异步任务是不会执行的。

事件=>同步=>异步

其中异步任务中又分为 宏任务(macrotasks)、微任务(microtasks),执行到异步任务时先执行宏任务,把宏任务放入Event Queue,然后在执行微任务,在将微任务放入Event Queue (这里要注意一点微任务和宏任务Event Queue是两个不同的空间)   等到回调的时候是先微任务然后在宏任务

执行:宏任务=>微任务  callback : 微任务=>宏任务

宏任务包括:整体代码 script,setTimeout,setInterval

微任务包括:Promise,process.nextTick

你可能感兴趣的:(js同步异步、事件循环(宏观任务、微观任务))