EventLoop 
EventLoop 是什么? 
Javascript 采用单线程的运行机制,同一时刻只能执行特定的任务。一旦遇到大量任务或者遇到一个耗时的任务,那么就很可能造成阻塞。
EventLoop 简单来说是一个用于统筹调度任务的一种机制,用于解决单线程问题而提出的。
宏仁务 & 微任务 
常见的宏任务和微任务有:
- 宏任务:
setTimeoutsetIntervalMessageChannelsetImmediate(ie 下生效) - 微任务:
Promise.then`` MutationObserverprocess.nextTick 
科普:为什么是 JS 是单线程的? 
相对的是 JS 如果是多线程,假如我们在线程 A 和线程 B 里同时对 DOM 进行修改,那么浏览器要以哪个修改为主呢?
思考:有了宏任务为什么还要有微任务? 
经典面试题 
ts
async function async1() {
  console.log('async1 start');
  await async2();
  console.log('async1 end');
}
async function async2() {
  console.log('async2');
}
console.log('script start');
setTimeout(function () {
  console.log('settimeout');
}, 0);
async1();
new Promise(function (resolve) {
  console.log('promise1');
  resolve();
}).then(function () {
  console.log('promise2');
});
console.log('script end');
答案
script startasync1 startasync2promise1script endasync1 endpromise2settimeout