JS中的宏任务与微任务

1、执行顺序

主线程 > 微任务 > Dom渲染 > 宏任务

2、微任务

promise中的三个方法(then、catch、finally)、…

3、宏任务

script、setTimeout、setInterval、I/O等…

宏任务、微任务都可以异步操作,那微任务要解决的是什么问题?

为了解决主线程任务过多的时候,异步回调等待时间过长的问题,可以在实时性和效率之间做一个有效的权衡。

//主线程
console.log(1);

//异步---宏任务
setTimeout(() => {
    console.log(2);
})

//异步---微任务
new Promise((resolve, reject) => {
    resolve()
    console.log(3);
}).then(() => {
    console.log(4);
}).finally(() => {
    console.log(5);
})

//主线程
console.log(6);

上述代码执行结果:1 3 6 4 5 2

你可能感兴趣的:(前端面试题,JavaScript,#,js面试题,javascript,前端,vue.js)