消息队列的优先级:

微任务第一

交互队列第二

网络队列第三

延时队列第四

      // 死循环指定的时间
      function delay(duration) {
        var start = Date.now()
        while (Date.now() - start < duration) {}
      }

      function addDelay() {
        console.log('添加延时队列')
        setTimeout(() => {
          console.log('延时队列执行')
        }, 100)
      }

      function addNetWork() {
        console.log('添加网络队列')
        fetch('./demo2.js').then(() => {
          console.log('网络队列执行')
        })
      }

      function addInteraction() {
        console.log('添加交互队列')
        interaction.onclick = function () {
          console.log('交互队列执行')
        }
        delay(3000)
      }

      begin.onclick = function () {
        addDelay()
        addNetWork()
        addInteraction()
        Promise.resolve().then(() => {
          console.log('微任务执行')
        })
        console.log('添加微任务')
        console.log('===========')
      }