//首先script作为第一个宏任务进入主线程,遇到promise.then放到微任务Event Queue中,记为p1,遇到new promise里的console.log直接输出3,then被分发到微任务Event Queue中,记为p2
//遇到第一个setTimeout,其回调函数被分发到宏任务Event Queue中。记为setTimeout1
//又遇到了第二个setTimeout,其回调函数被分发到宏任务Event Queue中,记为setTimeout2
//一轮过后就输出了3
//然后查看微任务Event Queue,发现p1和p2,输出2,4
//此时第一轮事件循环正式结束
//然后查看宏任务Event Queue,发现setTimeout1,promise.then放入微任务Event Queue,setTimeout放入宏任务,记录setTimeout3,
//查看微任务event queue,输出5,此时第二个宏任务结束,
//查看宏任务Event Queue,发现setTimeout2,执行输出6,此时第三轮宏任务结束
//查看宏任务Event Queue,发现setTimeout3,执行输出7
//结果应该是3,2,4,5,6,7