microtasks:Promise,async/await,process.nextTickdommacrotasks:包括整体代码脚本,setTimeout,setIntervalmicrotasks,macrotasks会进入不同的事件队列。例如setTimeout和setInterval会进入同一个EventQueue。在一个事件循环中,先执行microtask的queue,再执行dom,最后macrotask的queue遇到console立即执行先遇到setTimeout,放入macrotask的eventqueue中然后返回promise,并且新的promise会被立即执行,然后会分发到microtaskconsole.log("1")setTimeout(()=>{console.log("2")})newPromise((resolve)=>{resolve()console.log("3")}).then(()=>{console.log("4")}).finally(()=>{console.log("5")})console.log("6")输出136452第二个例子console.log("1");setTimeout(()=>{console.log("7");Promise.resolve().然后(()=>{console.log("9");});newPromise((resolve,reject)=>{console.log("8");resolve("10");setTimeout(()=>{console.log("14");})}).then((data)=>{console.log(data)});});newPromise((resolve,reject)=>{console.log("2");resolve("4");setTimeout(()=>{console.log("11");})}).then((数据)=>{控制台日志(数据);setTimeout(()=>{console.log("12");})Promise.resolve("5").then((d)=>{console.log(d);Promise.resolve("6").then((d)=>{console.log(d);});});setTimeout(()=>{console.log("13");})})console.log("3");输出:123456789101112示意图
