js 把异步任务分为宏任务和微任务。
宏任务是由宿主(浏览器,node )发起的。
微任务是由于js引擎发起的任务。
代码可能有3种。
1. 同步代码(js 执行栈,回调栈)
2. 微任务的异步代码(js引擎)
- process.nextTick(node)
- Promise.then()
- Async/Await
- Object.observe
3. 宏任务的异步代码(宿主环境)
- script(代码块)
- setTimeout/setInternval
它们是按照什么顺序执行的呢?
1.同步代码
2. 微任务异步代码
3.宏任务的异步代码
理解的话就是按照上面的顺序执行后,如果微任务 有任务进行排队,我们会通过事件循环的机制会推到执行站里面去执行微任务,如果微任务队列还有排队的任务,再通过事件循环的机制推到执行站中执行,如果微任务所有的任务都执行完后。就会按照同样的方式执行宏任务。如果宏任务所有的任务都执行完毕后,我们的整个代码就执行完毕了。