同步->微任务->宏任务->同步......
定时器的任务是宏任务,无论等待时间短还是长,都先进行同步任务,进行同步任务的时候定时器正常计时,等到同步任务结束,宏任务被放到宏任务队列里,就可以直接执行定时器内的任务
如果有两个定时器,在等完同步任务结束后,这两个定时器谁定的时间短,也就是计时的快,就先把谁放进宏任务队列里
微任务的执行举个例子就是:
例如这段代码会怎么输出
setTimeout(() => {
console.log("setTimeout");
}, 0);
new Promise(resolve => {
resolve();
console.log("promise");
}).then(value => console.log("成功"));
console.log("后盾人");
先执行同步代码,创建promise本身是同步的,所以先创建promise,创建完立马执行他的执行函数,所以第一个被打印的是【promise的立即执行函数里的同步部分】,也就是打印promise
第二个执行的是外部的同步任务,打印后盾人
第三步执行微任务,微任务队列里是promise里的then,打印为【成功】
第四步执行宏任务,也就是定时器,打印【setTimeout】
Dom渲染任务一般先加载,所以把