js 是一个单线程的,如果有一些高耗时操作就会带来进程组塞的问题,为了解决这问题, js 有两种任务执行模式:同步模式和异步模式。
1.同步模式:
同步模式下创建的同步任务是立即执行的
2.异步模式:
异步模式下创建的异步任务分为 宏任务 与 微任务 两种
所有任务可以分为两种,一种是同步任务(synchronous), 另一种是 ( asynchornous )。
同步任务指的是: 在主线程上排队执行的任务,只有前一个任务执行完毕,才嫩执行后一个任务。
异步任务指的是: 不进入主线程而进入“任务队列”(task queue)的任务,只有“任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行
ES6规范中 宏任务 (macro - task )是由宿主浏览器或node发起的,而微任务( jobs )是由 js 自身发起的
宏任务:包括整体代码 script , setTimeout , setInterval
微任务:promise . then (非 new promise),process.nextTick (node 中)