乐趣区

关于异步:宏任务macroTask和微任务microTask

宏工作:setTimeout,setInterval,ajax,DOM 事件
微工作:Promise,async/await
微工作执行机会比宏工作早
console.log(100)
// 宏工作
setTimeout(()=>{console.log(200)
})
// 微工作
Promise.resolve.then(()=>{console.log(300)
})
console.log(400)
// 打印程序:100,400,300,200

为什么微工作比宏工作执行的早

  1. 宏工作:DOM 渲染后触发,如 setTimeOut
  2. 微工作:DOM 渲染前触发,如 Promise

宏工作和微工作的基本区别

  1. 宏工作是浏览器规定的;
  2. 微工作是 es6 语法规定的;
  3. 微工作期待机会放在 micro task queue 中,首先执行同步代码,当代码执行实现,call stack 清空之后,执行以后的微工作,再尝试 DOM 渲染,最初触发 event loop 机制;

退出移动版