1. 什么是事件循环?
    2. 事件循环和宿主环境有关系吗?浏览器和node环境区别?
    3. 宏任务与微任务?
    4. 分析下面代码的执行顺序,能否解释为什么?
      1. new Promise((resolve, reject) => {
      2. console.log(1);
      3. setTimeout(() => {
      4. console.log(2)
      5. resolve(2);
      6. }, 0);
      7. console.log(3)
      8. })
      ```javascript 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(‘setTimeout0’) },0)
      setTimeout(function(){ console.log(‘setTimeout3’) },3)
      setImmediate(() => console.log(‘setImmediate’)); process.nextTick(() => console.log(‘nextTick’)); async1(); new Promise(function(resolve){ console.log(‘promise1’) resolve(); console.log(‘promise2’) }).then(function(){ console.log(‘promise3’) }) console.log(‘script end’)

    ```