前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【春节日更】快速理解宏任务与微任务

【春节日更】快速理解宏任务与微任务

作者头像
用户9914333
发布2022-07-22 14:17:32
4970
发布2022-07-22 14:17:32
举报
文章被收录于专栏:bug收集bug收集

前端高频面试题:

宏任务(macro-task)与微任务(micro-task)

01

概念理解

宏任务和微任务都是我们在开发工作中经常用到的。

macrotask 和 microtask 表示异步任务的两种分类。

宏任务一般是:包括整体代码script,setTimeout,setInterval、I/O、UI render。

微任务主要是:Promise、Object.observe、MutationObserver。

宏任务和微任务之间的关系

宏任务和微任务的区别

宏任务

1. 宏任务所处的队列就是宏任务队列

2. 宏任务队列可以有多个

3. 当宏任务队列的中的任务全部执行完以后会查看是否有微任务队列如果有先执行微任务队列中的所有任务,如果没有就查看是否有宏任务队列

微任务

1. 微任务所处的队列就是微任务队列

2. 只有一个微任务队列

3. 在上一个宏任务队列执行完毕后如果有微任务队列就会执行微任务队列中的所有任务

总结:

首先浏览器执行js进入主线程, 然后再判断是否有微任务,有就执行;

再判断是否有宏任务,有进行执行,执行后,再判断是否有微任务,循环此操作。这个循环的过程又称为EventLoop.

02

相关面试题

题1:

代码语言:javascript
复制
setTimeout(function() {

    console.log('1');

})

new Promise(function(resolve) {

    console.log('2');

}).then(function() {

    console.log('3');

})

console.log('4');

//打印顺序 2 4 3 1

题2:

代码语言:javascript
复制
console.log(1)
setTimeout(function(){
  console.log(2);
  let promise = new Promise(function(resolve, reject) {
      console.log(7);
      resolve()
  }).then(function(){
    console.log(8)
  });
},1000);
setTimeout(function(){
  console.log(10);
  let promise = new Promise(function(resolve, reject) {
      console.log(11);
      resolve()
  }).then(function(){
    console.log(12)
  });
},0);
let promise = new Promise(function(resolve, reject) {
    console.log(3);
    resolve()
}).then(function(){
  console.log(4)
}).then(function(){
  console.log(9)
});
console.log(5)

//打印顺序 1 3 5 4 9 10 11 12 2 7 8

做对了嘛,如果做对了,就说明你对这个知识点已经掌握了^_^, 没有对,可以再看两遍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档