前言
JavaScript 是一门单线程语言,为了防止主线程阻塞,就产生了所谓的同步任务和异步任务.简单的来说不耗时的程序语句就是同步任务,反之耗时的则是异步任务.为了有机协调同步任务和异步任务的执行顺序,所以出现了事件循环的概念.
任务队列
其实在 JavaScript 中 为优化防止主线程阻塞,把所有的任务分为同步任务和异步任务,在这其中,异步任务又分为宏任务和微任务,那这个有什么用呢?其实在这其中,JavaScript 的代码就可以有序的进行执行。接下来,让我们看看执行图:
通过上图:我们可以清晰的看到代码在执行顺序是怎么样的,其实 JavaScript 的代码执行顺序可以总结为八个字 “ 先同后异,先微后宏 ” 。
什么是宏任务?
宏任务:包含执行整体的js代码、事件回调(DOM事件),定时器,延时器等。
什么是微任务?
微任务:更新应用程序状态的任务,包括Promise.[then/catch/finally]回调,async/await等。