想品客老师的第十三天:宏任务、微任务--js任务调度流程

同步->微任务->宏任务->同步......

定时器的任务是宏任务,无论等待时间短还是长,都先进行同步任务,进行同步任务的时候定时器正常计时,等到同步任务结束,宏任务被放到宏任务队列里,就可以直接执行定时器内的任务

如果有两个定时器,在等完同步任务结束后,这两个定时器谁定的时间短,也就是计时的快,就先把谁放进宏任务队列里

想品客老师的第十三天:宏任务、微任务--js任务调度流程_第1张图片想品客老师的第十三天:宏任务、微任务--js任务调度流程_第2张图片

想品客老师的第十三天:宏任务、微任务--js任务调度流程_第3张图片想品客老师的第十三天:宏任务、微任务--js任务调度流程_第4张图片

微任务的执行举个例子就是:

例如这段代码会怎么输出

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渲染任务一般先加载,所以把

后面懒得看了

你可能感兴趣的:(js,javascript,前端,开发语言)