JavaScript的执行步骤
自上而下(单线程)
如果有一行报错,下面的代码就不执行
先执行同步代码,然后执行异步代码(setTimeout,setInterval,ajax)
console.log('a');
setTimeout(() => {
console.log("b");
})
console.log('c');
setTimeout(() => {
console.log("d");
})
输出的结果:a c b d
这里就是上面代码的执行过程
宏任务,与微任务
宏任务:事件的回调(点击事件) setTimeout() 和setInterval()
微任务:promise.then() .catch().finally() async/await MutationObserver Object.observe node.js里面的process.nextTick()
先执行微任务队列,然后再执行宏任务队列
<body>
<div class="box1"></div>
</body>
<script>
console.log('a');
setTimeout(() => {
console.log("b");
})
console.log('c');
Promise.resolve().then(() => {
console.log('promise');
})
console.log('d');
</script>
执行结果:a c d promise b
执行过程