同步任务
- 同步任务是指在主线程上排队执行的任务,
只有前一个任务执行完毕,才能继续执行下一个任务。
异步任务
- 异步任务指的是,不进入主线程、而进入"任务队列"的任务,只有等主线程任务执行完毕,"任务队列"的任务才会进入主线程执行。
异步任务分为 宏任务 和 微任务
宏任务
-
常见的宏任务:settimeout setInterval script(最外层的script标签)
-
会压入到调用栈中,宏任务会等到调用栈清空之后再执行
微任务
-
常见的微任务:promise (async await)
-
会在调用栈清空时立即执行(优先级大于宏任务), 调用栈中加入的微任务会立马执行
总结
- 同一作用域微任务队列优先于宏任务队列执行,
- 微任务队列上创建的宏任务会被后添加到当前宏任务队列的尾端,微任务队列中创建的微任务会被添加到微任务队列的尾端。
- 只要微任务队列中还有任务,宏任务队列就只会等待微任务队列执行完毕后再执行
宏任务微任务执行顺序总体理解
- 先执行同步任务,再执行当前所有的微任务,然后执行一个宏任务,然后再执行所有的微任务。再执行一个宏任务。再执行所有的微任务·······依次类推到执行结束。